dubbo服務引入流程圖01

dubbo服務引入流程圖

發現csdn沒有服務引入的流程圖就自己簡單做了一下
本圖是根據官網總結的大家可以去官網看超詳細

http://dubbo.apache.org/zh-cn/docs/source_code_guide/refer-service.html

原圖鏈接:https://pan.baidu.com/s/1rJ6dufG__Ky9HGpvS8JYDg 提取碼:q76h

在這裏插入圖片描述
官網介紹的服務引用原理

Dubbo 服務引用的時機有兩個,第一個是在 Spring 容器調用 ReferenceBean 的 afterPropertiesSet 方法時引用服務,第二個是在 ReferenceBean 對應的服務被注入到其他類中時引用。這兩個引用服務的時機區別在於,第一個是餓漢式的,第二個是懶漢式的。默認情況下,Dubbo 使用懶漢式引用服務。如果需要使用餓漢式,可通過配置 dubbo:reference 的 init 屬性開啓。下面我們按照 Dubbo 默認配置進行分析,整個分析過程從 ReferenceBean 的 getObject 方法開始。當我們的服務被注入到其他類中時,Spring 會第一時間調用 getObject 方法,並由該方法執行服務引用邏輯。按照慣例,在進行具體工作之前,需先進行配置檢查與收集工作。接着根據收集到的信息決定服務用的方式,有三種,第一種是引用本地 (JVM) 服務,第二是通過直連方式引用遠程服務,第三是通過註冊中心引用遠程服務。不管是哪種引用方式,最後都會得到一個 Invoker 實例。如果有多個註冊中心,多個服務提供者,這個時候會得到一組 Invoker 實例,此時需要通過集羣管理類 Cluster 將多個 Invoker 合併成一個實例。合併後的 Invoker 實例已經具備調用本地或遠程服務的能力了,但並不能將此實例暴露給用戶使用,這會對用戶業務代碼造成侵入。此時框架還需要通過代理工廠類 (ProxyFactory) 爲服務接口生成代理類,並讓代理類去調用 Invoker 邏輯。避免了 Dubbo 框架代碼對業務代碼的侵入,同時也讓框架更容易使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章