Dubbo——服務端接收請求的處理流程

服務端接收請求的處理流程


在創建NettyServer對象時,初始化了NettyHandler對象,該對象中的ChannlHandler賦值爲NettyServer對象。在接受到消息之後,調用NettyHandler.messageReceived方法,後續的調用鏈爲:NettyServer—>MultiMessageHandler-->HeartbeatHandler—> AllChannelHandleràDecodeHandleràHeaderExchangerHandleràDubboProtocol$requestHandler。在上述調用鏈中創建了Response對象並封裝了RpcInvocation對象。具體的流程在《7.1請求/響應的處理流程》中講解。

最後在DubboProtocol$requestHandler處理RpcInvocation對象,根據URL地址生成serviceKey,再查找到服務端的Invoker對象,然後經過過濾器鏈和監聽器鏈(在暴露服務時創建的,具體見《監聽器鏈》《過濾器鏈》的講解),最後在JavassistProxyFactory.getInvoker方法創建的AbstractProxyInvoker對象中通過反射的方式完成具體業務層的調用。見《3.3.1本地暴露服務》。

具體流程如下:


發佈了59 篇原創文章 · 獲贊 56 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章