vertx架構(gòu)

對(duì)于部署標(biāo)準(zhǔn)模式verticle,vertx的架構(gòu)如下:

standard verticle架構(gòu).png

對(duì)于部署worker模式verticle,vertx的架構(gòu)如下:

worker verticle架構(gòu).png
  • vertx的Acceptor EventloopGroup只有1個(gè)Acceptor Eventloop,即通過(guò)1個(gè)線程監(jiān)聽所有客戶端的連接,連接建立后交給VertxEventLoopGroup處理。
  • vertx可以把server(HttpServer,TcpServer,UdpServer)部署在多個(gè)verticle中,每個(gè)verticle共享這個(gè)server,server的連接監(jiān)聽在Acceptor Eventloop中,但讀寫事件的觸發(fā)和處理都在VertxEventLoopGroup的eventloop中執(zhí)行。
  • 每部署1個(gè)verticle,都會(huì)為該verticle綁定1個(gè)event loop,這個(gè)eventloop是從VertxEventLoopGroup中按順序取出的1個(gè),該verticle中的io讀寫都在此eventloop中執(zhí)行。
  • 每部署1個(gè)verticle,都會(huì)為該verticle創(chuàng)建1個(gè)執(zhí)行context(每個(gè)context都對(duì)應(yīng)1個(gè)線程或執(zhí)行器),傳入的業(yè)務(wù)request handler都在此context對(duì)應(yīng)的線程或執(zhí)行器中執(zhí)行。
  • 對(duì)于標(biāo)準(zhǔn)模式的verticle,context對(duì)應(yīng)的線程就是該verticle綁定的event loop的線程;對(duì)于worker模式的verticle,context對(duì)應(yīng)的是worker線程池的執(zhí)行器。因此,對(duì)于標(biāo)準(zhǔn)模式verticle,編解碼handler、request handler都在綁定的eventloop中執(zhí)行,但excuteBlocking方法會(huì)在worker線程池執(zhí)行;對(duì)于worker模式verticle,編解碼handler會(huì)在綁定的eventloop中執(zhí)行,但request handler會(huì)在worker線程池的順序執(zhí)行器中執(zhí)行。(注:request handler就是創(chuàng)建server時(shí)設(shè)置的業(yè)務(wù)處理handler)
  • 當(dāng)部署的verticle數(shù)量小于VertxEventLoopGroup的eventloop數(shù)量時(shí),會(huì)造成部分event loop完全空閑;當(dāng)部署的verticle數(shù)量大于VertxEventLoopGroup的eventloop數(shù)量時(shí),多個(gè)verticle可能綁定同一個(gè)eventloop。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容