首页  

vertx架构简介     所属分类 vertx 浏览量 291
Vert.x is a tool-kit for building reactive applications on the JVM.


don't call us,we will call you.
don't block me!

Vert.x是在JVM上构建响应式应用(reactive application)的工具集 
事件驱动的和非阻塞,可以用少量线程来处理很多并发。


Vertx实例:Vertx的控制中心,承担对Verticle、event loop等组件的配置、启动等任务
Event Loop:利用固定数量的线程处理所有业务逻辑,每个Vertx实例默认维护的线程数量为2*CPU核数
Worker Pool:执行阻塞任务所使用的线程池,默认线程数 20
Verticle:Vertx应用中的基本部署单位,一般一个Vertx应用包含一个或多个Verticle,不同verticle之间使用event bus进行通信
Event Bus:不同verticle间的通信工具


通常,一个进程会创建一个Vert.x实例,负责部署 Verticle 和 管理运行时资源
Verticle实例之间可通过EventBus发送异步消息来通讯
在集群模式下,通过ClusterManager可发现远程Verticle,EventBus可将消息路由到远程Verticle

AcceptorEventloopGroup 只有1个 AcceptorEventloop,
通过1个线程监听所有客户端的连接,连接建立后交给 VertxEventLoopGroup 中的一个 EventLoop 来处理。

AcceptorEventloop 监听和处理连接事件,但NIO读写事件的触发和处理都在 VertxEventLoopGroup 的 EventLoop 中执行。

每个verticle实例,都有一个context ,每个context都绑定一个EventLoop和Handler处理线程,
传入的业务request事件都在此context对应的Handler处理线程中执行。

标准模式的verticle,context对应的Handler处理线程就是该verticle绑定的EventLoop线程
worker模式的verticle,context对应的Handler处理线程是worker线程。

标准模式verticle,编解码handler、request handler都在context绑定的EventLoop中执行;
worker模式verticle,编解码handler会在context绑定的EventLoop中执行,但request handler会在context对应的worker线程中顺序的执行。


verticle中通过excuteBlocking方法提交的任务,都会由worker线程池执行;

当部署的verticle数量小于VertxEventLoopGroup的EventLoop数量时,会造成部分EventLoop空闲;
当部署的verticle数量大于VertxEventLoopGroup的EventLoop数量时,多个verticle可能绑定同一个EventLoop


DeploymentOptions options = new DeploymentOptions().setWorker(true);
vertx.deployVerticle(new MyVerticle(), options);

multi thread worker verticle
在同一个时间点,有多个线程同时执行一个Worker Verticle实例

上一篇     下一篇
ehcache 例子

ehcache3 持久化缓存说明

ehcache3 过期测试

CompletableFuture 例子

CompletionStage 说明

vertx future compose CompositeFuture