dubbo原理整理(菜鳥筆記)

2021-09-25 18:45:07 字數 2557 閱讀 3849

1. 執行com.alibaba.dubbo.config.spring.schema.dubbonamespacehandler 中的init()方法

向private final mapparsers = new hashmap<>();新增各個配置項和beandefinitionparser

2.依次執行dubbobeandefinitionparser類的解析方法parse(),進行解析,並把配置資訊註冊

對配置檔案中標籤

="com.learn.service.userservice" ref=

"userservice"

/>進行解析暴露

1.servicebean

1.1 實現了initializingbean介面的afterpropertiesset方法

1.1介面(

)1.2

.1export()

;1.2

.2 serviceconfig.

doexport()

->

doexporturls()

->

doexporturlsfor1protocol()

1.2.3

doexporturlsfor1protocol

()方法中

1.2.3.1獲取指定介面、指定實現類、指定註冊中心、指定協議的執行器 invoker,並進行包裝

1.2.3.2呼叫protocol.

export

; 有兩個proticol,dubboprotocol和registryprotocol。

1.2.3.2

.1先執行registryprotocol.

export()

->

dolocalexport

(origininvoker)

1)dubboprotocol.

export()

dubboprotocol.

export()

->

openserver

(url)

-> exchangers.

bind

(url, requesthandler)

-> transporters.

bind

(url,

newdecodehandler

(new

headerexchangehandler

(handler)))

-> nettyserver/minatransporter

2)providerconsumerregtable.

registerprovider

(origininvoker, registryurl, registedproviderurl)

;註冊服務到註冊中心

對配置檔案解析引用服務

1.referencebean

1.1 實現了initializingbean介面的afterpropertiesset方法

1.2 factorybean 自定義bean的生成,呼叫getobject()介面

get()->init()->createproxy(map)->protocol.refer()

1.2.1 有兩個protocol,dubboprotocol和registryprotocol

1.2.1.1 先執行registryprotocol.refer()方法

1)directory.subscribe()內部呼叫

dubboprotocol.refer()

->getclients(url);

->getsharedclient(url);

->initclient(url);

->exchangers.connect(url, requesthandler);

->transporters.connect(url, new decodehandler(new headerexchangehandler(handler)));

1.2.1.2 註冊到登錄檔,providerconsumerregtable.registerconsumer(invoker, url, subscribeurl, directory); 返回執行器

1.3 返回**物件 proxyfactory.getproxy(invoker);

2. 把**物件儲存到容器中

//**服務介面執行

1.invokerinvocationhandler.invoke()方法

附件github原始碼

dubbo 問題整理

1 面試題 dubbo中zookeeper做註冊中心,如果註冊中心集群都掛掉,發布者和訂閱者之間還能通訊麼?可以的,啟動dubbo時,消費者會從zk拉取註冊的生產者的位址介面等資料,快取在本地。每次呼叫時,按照本地儲存的位址進行呼叫 註冊中心對等集群,任意一台宕掉後,會自動切換到另一台 註冊中心全部...

dubbo原理特點

dubbo是乙個分布式服務框架,致力於提供高效能和透明化的rpc遠端服務呼叫方案,以及soa服務治理方案。簡單的說,dubbo就是個服務框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有dubbo這樣的分布式服務框架的需求,並且本質上是個服務呼叫的東東,說白了就是個遠端服務呼叫的...

dubbo使用原理

dubbo是阿里巴巴公司開放源 的高效能優秀的伺服器框架,使得應用可通過高效能的rpc實現服務的輸入和輸出功能,可以與spring進行繼承。上述的工作原理 provider 暴露服務方稱之為 服務提供者 consumer 呼叫遠端服務 方稱之為 服務消費者 registry 服務註冊與發現的中心目錄...