note: Context 与 EventLoop 关系 1 : N ; 每次建立一个vericles或者multi instances 经过EventLoopGroup.next挑出一个EventLoop,因此是1:N关系; context <=> verticle. 总结: 1.verticle和multi Instances总和不超过EventLoopSize,multi verticle在同一个EventLoop的 Thread上运行加大负担,若是形成线程阻塞会影响延时任务(Timer,Periodic)的进行和任务事件堆积过大; 2.verticle中通常能够不用考虑线程(单线程)安全问题,除了定义static variable、static block、 static method外,verticle之间经过EventBus通讯,极端状况本地的verticle之间经过共享内存通讯效果更好. 3.每創建一個verticle會根據 setting verticle Type 創建context instance , 因此create verticles size > EventloopSize , 那麼一個Eventloop就會執行 multi verticle handlers.
Context Class diagram 如图:安全
Verticle Types:oop
Verticle Types : 1、Standard Verticles、2、Worker Verticles、3、Multi-threaded worker verticles. 本质仍是eventloop处理connection、read/write、encode/decode 等等, 事件处理(EventHandler)的逻辑 就在 setting verticle type 处理(Thread), 调度逻辑在VertxHandler类配置的context调度, 和vertx.executeBlocking->{...} 相同效果.