其他分享
首页 > 其他分享> > vertx的Actor模型实现

vertx的Actor模型实现

作者:互联网

前言

image

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 如图:

image

Verticle Types:

Verticle Types : 一、Standard Verticles、二、Worker Verticles、三、Multi-threaded worker verticles.
本质还是eventloop处理connection、read/write、encode/decode 等等, 事件处理(EventHandler)的逻辑
就在 setting verticle type 处理(Thread), 调度逻辑在VertxHandler类配置的context调度,
和vertx.executeBlocking->{...} 相同效果.

 

调度框图

image

时序图

image

Multi instances Verticle Structure

image

标签:multi,Verticle,模型,EventLoop,Actor,static,context,verticle,vertx
来源: https://www.cnblogs.com/cmfa/p/10621177.html