Vert.x:JVM 上的异步 Reactive 工具集

发布时间:2026/7/8 11:37:46
Vert.x:JVM 上的异步 Reactive 工具集 文章目录Vert.xJVM 上的异步 Reactive 工具集1、 这玩意儿是干嘛的2、 为什么要用它3、 怎么构建4、 适合哪些人用Vert.xJVM 上的异步 Reactive 工具集Vert.x 在 GitHub 上已经拿到 14.6K Star 了。这是 Eclipse 基金会托管的 Polyglot 异步应用框架核心仓库 vert.x 维护着 HTTP、TCP、文件系统访问等底层能力Vert.x 生态里的其他组件都建在这套核心之上。1、 这玩意儿是干嘛的Vert.x Core 提供一组低阶 API覆盖 HTTP 服务、TCP 服务、文件系统访问、事件总线、定时器、缓冲区这些基础能力。它可以被应用程序直接使用Vert.x 体系下的 Web、Mail、Redis 客户端、数据库客户端、Reactive 扩展等组件都构建在 Core 之上。Polyglot 是 Vert.x 最显眼的标签。它本身用 Java 写但可以在 JVM 上跑 JavaScript、Groovy、Ruby、Kotlin、Scala 等多种语言。同一套 Vert.x 运行时不同语言写的组件之间通过事件总线通信。Reactive 是另一个标签。Vert.x 不绑定某个具体的 Reactive 库但 API 设计贯彻事件驱动和非阻塞可以和 RxJava、Mutiny、Project Reactor 配合使用。2、 为什么要用它写高并发后端服务的人都知道线程模型选错了后面怎么调都是死结。一请求一线程的模型在 IO 密集场景里把线程都耗在阻塞等待上机器资源用不满。Vert.x 走的是 Event Loop 模型。少量事件循环线程处理大量并发连接业务逻辑里如果要做长耗时操作官方推荐用 Worker Executor 隔离出去不阻塞 Event Loop。这套模型在网关、推送、IM、IoT 这些长连接场景里表现稳定。netty layer 是 Vert.x 的底层。netty 的 ByteBuf、Channel、EventLoop 在 Vert.x 里被封装成更上层的 Buffer、NetServer、Verticle 概念使用者不太需要直接面对 netty 的细节。3、 怎么构建构建 Vert.x artifact 用 mavenmvn package跑测试mvntest测试可以指定 HTTP 端口和 HTTPS 端口mvntest-Dvertx.httpPort8888-Dvertx.httpsPort4044Vert.x 在 BSD 和 Linux 上支持 native transport开启 epoll、io_uring、kqueue 各自的 profilemvntest-PNativeEpollmvntest-PNativeIoUringmvntest-PNativeKQueueDomain Socket 是 Linux 独有的能力mvntest-PNativeEpollDomainSockets集成测试用 vertx verify 命令跑不同 JVM 配置vertx verify-DtestFooTest构建文档mvn package-Pdocs-DskipTests打开 target/docs/vertx-core/java/index.html 就能看到生成的 JavaDoc。4、 适合哪些人用写高并发 Java 后端、觉得传统 Servlet 模型线程开销太重的工程师想用 Kotlin 协程但又需要一个成熟异步运行时的人做 API 网关、消息中转、长连接服务的团队需要在 JVM 上跑多语言脚本、又想共用一套 IO 层的项目Vert.x 不是 Spring Boot 的替代品两个项目解决的问题不完全重叠。Spring Boot 优化的是开发效率和应用生态Vert.x 优化的是单机资源利用率和并发上限。把这两个理解清楚了再选型能少走很多弯路。国内用 Vert.x 的团队比起 Spring 系来说不算多但用户群体比较稳定文档相对完整。在网关、推送、IoT 这些对并发和延迟敏感的领域值得关注。路。国内用 Vert.x 的团队比起 Spring 系来说不算多但用户群体比较稳定文档相对完整。在网关、推送、IoT 这些对并发和延迟敏感的领域值得关注。