后端 Verticle 架构实战:用 NeonBeeDeployable 推送一条通知

这几年写后端,越来越明显一个趋势:
不是所有业务都适合"重量级 Spring Boot 微服务"

尤其是:

  • IO 密集
  • 高并发
  • 事件驱动
  • 逻辑拆得很碎的系统

这类场景下,Vert.x 那一套 Verticle 架构,真的很香。

这篇文章我就用 NeonBee + NeonBeeDeployable ,结合一个真实业务场景:推送通知,完整聊一聊:

  • Verticle 架构是啥
  • NeonBeeDeployable 怎么用
  • 实际代码怎么写
  • 和传统 Spring Boot 微服务到底差在哪 🤔

一、先说人话:Verticle 架构是啥?

一句话版本:

Verticle = 一个轻量、无状态、事件驱动的业务单元

在 Vert.x 里:

  • 一个 Verticle 通常只做一件事
  • 通过 EventBus 通信
  • 不关心 HTTP、端口、线程池这些脏活累活

你可以把它理解成:

"跑在同一个 JVM 里的微服务"

而不是:

  • 一个服务一个进程
  • 一个服务一个端口
  • 一堆 Spring Context 😅

二、NeonBeeDeployable 是干嘛的?

如果你用过原生 Vert.x,大概率会遇到这些问题:

  • Verticle 生命周期要自己管
  • 配置读取很乱
  • 部署顺序、依赖不好处理

NeonBeeDeployable 就是来解决这些"工程化问题"的:

👉 它提供:

  • 统一的 Verticle 部署入口
  • 配置自动注入
  • 和业务强相关的 Deployable 抽象

简单说就是:

让 Verticle 更像一个"业务组件",而不是底层框架代码


三、真实业务场景:推送一条通知 🔔

假设我们有这么一个需求:

当用户下单成功后,需要:

  1. 发送站内通知
  2. 可能后续接短信 / 邮件
  3. 不影响下单主流程(异步)

如果你用 Spring Boot,通常是:

  • Order Service
  • 调 Notification Service 的 REST API
  • 或者发 MQ

在 Verticle 架构里,我们可以更轻量一点 👇


四、整体架构设计(Verticle 版)

text 复制代码
OrderVerticle
     |
     |  EventBus.send("notification.push")
     ↓
NotificationVerticle
     |
     ├─ 站内通知
     ├─ 短信(可选)
     └─ 邮件(可选)

特点:

  • 没有 HTTP 调用
  • 没有序列化 / 反序列化
  • 全部 JVM 内异步通信

五、NotificationVerticle 示例(NeonBeeDeployable)

1️⃣ 定义通知消息对象

java 复制代码
public class NotificationMessage {
    public String userId;
    public String title;
    public String content;
}

2️⃣ 实现 NotificationVerticle

java 复制代码
public class NotificationVerticle extends NeonBeeDeployable {

    @Override
    public void start() {
        vertx.eventBus().consumer(
            "notification.push",
            message -> {
                NotificationMessage msg =
                    Json.decodeValue(message.body().toString(), NotificationMessage.class);

                // 模拟写数据库 / 调第三方
                pushInAppNotification(msg);

                message.reply("ok");
            }
        );
    }

    private void pushInAppNotification(NotificationMessage msg) {
        System.out.println(
            "📣 给用户 " + msg.userId +
            " 推送通知:" + msg.title
        );
    }
}

是不是非常直白?
没有 Controller、没有 Service、没有一堆注解 👍


六、OrderVerticle 里怎么调用?

java 复制代码
public class OrderVerticle extends NeonBeeDeployable {

    public void onOrderCreated(String userId) {
        NotificationMessage msg = new NotificationMessage();
        msg.userId = userId;
        msg.title = "下单成功 🎉";
        msg.content = "你的订单已创建成功";

        vertx.eventBus().request(
            "notification.push",
            Json.encode(msg),
            ar -> {
                if (ar.succeeded()) {
                    System.out.println("通知已发送");
                }
            }
        );
    }
}

这里的好处是:

  • 下单逻辑 完全不关心通知怎么实现
  • 通知慢了、挂了,都不影响主流程
  • 后续加短信、邮件,不用动 OrderVerticle

七、和 Spring Boot 微服务对比一下 ⚔️

维度 Verticle + NeonBee Spring Boot 微服务
通信方式 EventBus(内存级) HTTP / MQ
启动速度 ⚡ 极快 🐢 偏慢
资源占用 🪶 很轻 🧱 较重
架构复杂度 低(少组件) 高(网关、注册中心...)
适合场景 高并发、事件驱动 复杂业务、对外 API

⚠️ 不是说 Spring Boot 不好,而是:

Spring Boot 是"企业级全家桶"
Verticle 是"高性能业务拼装刀"

用错场景,才会痛苦。


八、什么时候我会选 Verticle 架构?🤔

我个人一般在这些情况下用:

  • 网关内部逻辑
  • 推送 / 通知 / 事件处理
  • IM / 实时系统
  • 内部高并发服务

而在这些场景还是 Spring Boot 更合适:

  • 对外 REST API
  • 业务模型复杂
  • 团队 Vert.x 经验不足

九、总结一句话 🧠

NeonBeeDeployable + Verticle 架构,本质是在 JVM 内做"轻量级微服务"

它带来的不是"新技术炫技",而是:

  • 更快
  • 更简单
  • 更少运维成本

如果你现在的系统:

  • 微服务拆得很碎
  • 但大部分服务其实只是转发 / 处理事件

那真的可以试试这一套 💡

【AI作文】

相关推荐
程序猿追8 小时前
CANN ops-math仓库解读 数学算子的底层支撑与高性能实现
人工智能·架构
芷栀夏8 小时前
从 CANN 开源项目看现代爬虫架构的演进:轻量、智能与统一
人工智能·爬虫·架构·开源·cann
程序猿追9 小时前
深度剖析 CANN ops-nn 算子库:架构设计、演进与代码实现逻辑
人工智能·架构
程序猿追9 小时前
深度解码昇腾 AI 算力引擎:CANN Runtime 核心架构与技术演进
人工智能·架构
晚霞的不甘9 小时前
CANN 编译器深度解析:TBE 自定义算子开发实战
人工智能·架构·开源·音视频
程序猿追10 小时前
昇腾算力之锚:深度解读 CANN ascend-toolkit 异构计算架构与工程实践
架构
一枕眠秋雨>o<10 小时前
深入 CANN ops-nn:昇腾 NPU 算子开发的工程化实践与架构哲学
架构
未来龙皇小蓝10 小时前
RBAC前端架构-01:项目初始化
前端·架构
island131410 小时前
CANN Catlass 算子模板库深度解析:高性能 GEMM 架构、模板元编程与融合算子的显存管理策略
人工智能·神经网络·架构·智能路由器