一張圖看懂Dubbo服務引用全過程
Dubbo reference建立過程
本文透過圖示(dubbo reference建立過程)描述了透過dubbo reference註解建立動態代理invoker的完整過程,不當之處,歡迎指出
spring @reference註解:服務消費者引用服務配置,如
public class AnnotationConsumeService { @com.alibaba.dubbo.config.annotation.Reference public AnnotateService annotateService; // ...}
透過beanpostprocessor和beanfactorypostprocessor機制處理註解,可參考之前文章,此處使用的是ServiceAnnotationBeanPostProcessor/ReferenceAnnotationBeanPostProcessor
核心在ReferenceConfig,組裝url引數(url會註冊到zookeeper或者dubbo等註冊中心,url帶有各種屬性資訊,貫穿處理流程始終),建立動態代理invoker
建立invoker動態代理物件時根據是否存在registry註冊中心和url個數,決定是建立cluster invoker,還是直接建立對應protocol的代理物件,建立完成後即返回,具體呼叫時會走loadbalance等機制
此過程中大量使用了dubbo的spi機制,也就是動態獲取處理類的機制,裡面對於wrapper型別(將相同型別的instance做層層wrap,如ProtocolListenerWrapper和ProtocolFilterWrapper就是對protocol型別的invoker做了wrap,詳見ExtensionLoader處理)、adaptive型別(統一呼叫介面,可以透過javasist動態生成,進一步根據name獲取對應的處理類)做了區分,具體內容請閱讀原始碼或者網上搜尋
存在多種cluster,預設為failover,cluster本身也是一個invoker,在呼叫cluster的invoke方法時,cluster會獲取對應的directory下的invoker列表,如registryDirectory會從註冊中心(如zookeeper)訂閱provider資訊,然後根據protocol(如dubbo)生成對應的invoker,再透過router做過濾,返回invoker列表
cluster獲取invoker列表後,走loadbalance,有多種loadbalance(如roundrobin、一致性雜湊等)
呼叫具體invoker的invoke方法
不同協議的invoker(如dubbo)底層會透過netty或者grizzly機制建立client和對方通訊,可以是共享client,也可以one client per connection,invoker將handler暴露給client,client獲取訊息後經過一系列訊息處理回撥handler
作者:68號小喇叭
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2331/viewspace-2820230/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 阿里面試:dubbo的服務引用過程阿里面試
- DUBBO服務啟動過程
- dubbo--5服務引用
- Dubbo服務呼叫過程原始碼解析④原始碼
- Dubbo中暴露服務的過程解析
- Dubbo服務消費者呼叫過程
- Dubbo原始碼之服務引用原始碼
- Dubbo原始碼解析之服務引入過程原始碼
- Dubbo原始碼解析之服務呼叫過程原始碼
- Dubbo原始碼分析(三)Dubbo的服務引用Refer原始碼
- dubbo原始碼分析02:服務引用原始碼
- Dubbo原始碼分析之服務引用原始碼
- Dubbo原始碼解析之服務匯出過程原始碼
- Dubbo原理和原始碼解析之服務引用原始碼
- Dubbo-go 原始碼筆記(一)Server 端開啟服務過程Go原始碼筆記Server
- 圖解Dubbo,Dubbo服務介面詳解圖解
- 一張圖弄清Activity的啟動過程
- 圖解Dubbo,Dubbo服務消費詳解圖解
- 【人工智慧】一張圖看懂華為雲EI的年度心路歷程人工智慧
- Dubbo原始碼分析(六)服務引用的具體流程原始碼
- 圖解Dubbo,Dubbo服務提供者詳解圖解
- 一張圖看懂 SQL 的各種 join 用法SQL
- NFS服務搭建過程NFS
- 一張圖瞭解瀏覽器渲染頁面的過程瀏覽器
- 一張圖看懂大型網站技術架構網站架構
- 一圖看懂騰訊安全聯邦學習應用服務聯邦學習
- Linux一個服務被訪問的過程Linux
- 一張圖看懂遊戲線上運營那些事遊戲
- ControlNet作者又出爆款!一張圖生成繪畫全過程,兩天狂攬1.4k Star
- 幣圈小蝶:幣圈炒幣,一文看懂比特幣交易的全過程比特幣
- innobackupex命令備份全過程圖解圖解
- ArcGIS Pro建立、釋出、呼叫GP服務全過程示例(等高線分析)
- 十張圖看懂微軟Azure發展微軟
- 引導過程與服務控制
- 超詳細,新手都能看懂 !使用SpringBoot+Dubbo 搭建一個簡單的分散式服務Spring Boot分散式
- 超詳細,新手都能看懂!使用SpringBoot+Dubbo搭建一個簡單的分散式服務Spring Boot分散式
- Dubbo Mesh - 從服務框架到統一服務控制平臺框架
- 一張圖看懂影象識別演算法發展歷史演算法