dubbo線程模型

這里寫dubbo線程模型,主要是講服務(wù)消費(fèi)者和服務(wù)提供者這兩大核心的線程模型。

一 dubbo服務(wù)提供者線程模型。

這里我們想得到dubbo線程模型,先啟動(dòng)dubbo提供者,然后jstack pid >> stack.log獲取線程信息。也可以根據(jù)debug來觀察信息,如下圖所示。

11111.PNG

主要有以下線程:

  • 5 New I/O worker
  • 1 New I/O server boss
  • 1 dubbo-remoting-server-heartbeat-thread-1
  • 1 DubboRegistryFailedRetryTimer-thread-1
  • 1 ZkClient-EventThread-23-127.0.0.1:2181
  • 1 main-SendThread
  • 1 main-EventThread
  • 6 DubboSaveRegistryCache-thread-1
  • 1 DubboServerHandler-ip-thread-1
  • 1 DubboResponseTimeoutScanTimer

根據(jù)jstack打印的堆棧以及相關(guān)調(diào)用鏈路上debug會(huì)得出一些信息。

  • New I/O worker和New I/O server boss 對(duì)應(yīng)netty的worker和boss線程。
  • heartbeat,心跳檢測(cè),dubbo服務(wù)端啟動(dòng)會(huì),會(huì)對(duì)和客戶端的長(zhǎng)連接做周期性檢查。
  • DubboRegistryFailedRetryTimer

dubbo服務(wù)提供者流程。

  • (New I/O worker線程)當(dāng)有請(qǐng)求進(jìn)來的時(shí)候,因?yàn)槭情L(zhǎng)連接,這里的請(qǐng)求進(jìn)來指的是Channel接受到消息,首先是進(jìn)入NettyHandler的messageReceived方法。
  • 然后經(jīng)過HeartbeatHandler判斷是不是心跳請(qǐng)求或者響應(yīng),發(fā)現(xiàn)不是,則繼續(xù)往下執(zhí)行received。
  • 再往下走,把這里的Channel,ChannelHandler,message扔給ChannelEventRunnable類,放在DubboServerHandler-xxx-thread-8線程執(zhí)行。
  • 該線程執(zhí)行代碼是在ChannelEventRunnable:run中。發(fā)現(xiàn)是RECEIVED,則調(diào)用DecodeHandler的received。然后執(zhí)行到HeaderExchangeHandler的received。在received中,會(huì)有這個(gè)代碼Response response = handleRequest(exchangeChannel, request);。然后返回結(jié)果。

二 dubbo服務(wù)消費(fèi)者線程模型。

最后編輯于
?著作權(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)容

  • DUBBO線程模型 從官方描述來看dubbo線程模型支持業(yè)務(wù)線程和I/O線程分離,并且提供5種不同的調(diào)度策略。 拿...
    小2斗魚閱讀 2,492評(píng)論 2 4
  • ??dubbo線程模型分為IO線程和服務(wù)調(diào)用處理線程,IO線程主要是netty的線程,可以在protocol標(biāo)簽中...
    mikewt閱讀 2,267評(píng)論 1 1
  • 轉(zhuǎn)自 https://ifeve.com/dubbo-threadmodel/ Dubbo剖析-線程模型 一、前言...
    持續(xù)在更新閱讀 312評(píng)論 0 0
  • 概述 Dubbo線程模型 IO線程組:負(fù)責(zé)IO流形式監(jiān)聽客戶端的所有行為(連接、斷開、發(fā)送讀、寫請(qǐng)求) 業(yè)務(wù)線程池...
    黃靠譜閱讀 707評(píng)論 0 7
  • 他人汲取能力。個(gè)人匯聚能量
    江畔啊閱讀 367評(píng)論 0 0

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