后端 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作文】

相关推荐
sunny_3 小时前
⚡️ vite-plugin-oxc:从 Babel 到 Oxc,我为 Vite 写了一个高性能编译插件
前端·webpack·架构
兆子龙7 小时前
模块联邦(Module Federation)详解:从概念到手把手 Demo
前端·架构
Bigger9 小时前
告别版本焦虑:如何为 Hugo 项目定制专属构建环境
前端·架构·go
狗哥哥13 小时前
微前端架构下的平台级公共组件资源体系设计
前端·架构
两万五千个小时13 小时前
落地实现 Anthropic Multi-Agent Research System
人工智能·python·架构
Mintopia14 小时前
思想长期停在事物表面的深层原因:认知机制、环境结构与技术化治理
架构
兆子龙15 小时前
React Compiler 来了:少写 useMemo,照样稳
前端·架构
兆子龙1 天前
用 React + Remotion 做视频:入门与 AI 驱动生成
前端·架构
一枚前端小姐姐1 天前
低代码平台表单设计系统技术分析(实战二)
低代码·架构·前端框架
爱勇宝1 天前
2026年前端生存规划:只会写页面的人,正在被悄悄淘汰
前端·后端·架构