vertx架构

对于部署标准模式verticle,vertx的架构如下:

standard verticle架构.png

对于部署worker模式verticle,vertx的架构如下:

worker verticle架构.png
  • vertx的Acceptor EventloopGroup只有1个Acceptor Eventloop,即通过1个线程监听所有客户端的连接,连接建立后交给VertxEventLoopGroup处理。
  • vertx可以把server(HttpServer,TcpServer,UdpServer)部署在多个verticle中,每个verticle共享这个server,server的连接监听在Acceptor Eventloop中,但读写事件的触发和处理都在VertxEventLoopGroup的eventloop中执行。
  • 每部署1个verticle,都会为该verticle绑定1个event loop,这个eventloop是从VertxEventLoopGroup中按顺序取出的1个,该verticle中的io读写都在此eventloop中执行。
  • 每部署1个verticle,都会为该verticle创建1个执行context(每个context都对应1个线程或执行器),传入的业务request handler都在此context对应的线程或执行器中执行。
  • 对于标准模式的verticle,context对应的线程就是该verticle绑定的event loop的线程;对于worker模式的verticle,context对应的是worker线程池的执行器。因此,对于标准模式verticle,编解码handler、request handler都在绑定的eventloop中执行,但excuteBlocking方法会在worker线程池执行;对于worker模式verticle,编解码handler会在绑定的eventloop中执行,但request handler会在worker线程池的顺序执行器中执行。(注:request handler就是创建server时设置的业务处理handler)
  • 当部署的verticle数量小于VertxEventLoopGroup的eventloop数量时,会造成部分event loop完全空闲;当部署的verticle数量大于VertxEventLoopGroup的eventloop数量时,多个verticle可能绑定同一个eventloop。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容