以前寫過一篇介紹dubbo拓展點載入機制的文章,分析的比較表面化,人嘛,
認識事物總有乙個從淺到深的過程,所以
隨著對dubbo原始碼的深入研究,發現dubbo
拓展點載入中也加入了類似spring中的ioc機制來主動給需要的bean注入屬性,
現在分析一下的實現(現在對於原理實現**像找了魔一樣)。
dubbo的拓展點載入器(extensionloader)是乙個dubbo的各種元件bean管理容器,
當載入特定的拓展時,載入器會給
需要載入的bean注入需要型別的例項的適配類,譬如這裡
以dubbo服務發布時,註冊中心例項的獲取為例,當服務暴露時,會
向註冊中心註冊服務的資訊,
在此之前需要獲取類例項,流程圖如下:
這個圖是呼叫過程,然後ioc特性發生在getextension(..)中,
上圖的呼叫流程可以說是dubbo中一種主動注入依賴的模板,
理解了它,基本就把握了dubbo拓展點載入的ioc特性。
看一下原始碼:
這裡稍微介紹一下dubbo對拓展工廠類的管理機制,由於dubbo既要依賴spring容器來管理本地的業務服務類bean(譬如暴露的使用者中心服務),又要自己管理本身服務元件(譬如註冊中心、dubbo協議等元件),所有dubbo框架維護了兩套bean的管理容器 springextensionfactory和spiextensionfactory, 為了在使用時,提供統一的服務介面,dubbo又定義了適配工廠類 adaptiveextensionfactory,由它統一負責提供呼叫的入口, 原始碼如圖 :
所以以後看到dubbo的原始碼,發現如果類中定義了某個物件型別的屬性,卻不知道dubbo是如何注入值的,不要再一臉懵逼,它就是在載入拓展時,動態注入的
,這就是dubbo擴充套件機制的ioc特性!
總重每乙個堅持改變,讓現狀變得更好的人!!
dubbo的負載容錯機制
摘自部落格 dubbo提供了多種容錯方案,預設模式為failover,也就是失敗重試。1 failover cluster 失敗重試 當服務消費方呼叫服務提供者失敗後自動切換到其他服務提供者伺服器進行重試。這通常用於讀操作或者具有冪等的寫操作,需要注意的是重試會帶來更長延遲。可通過 retries ...
Dubbo 常用的容錯機制
常見容錯機制 failover failsafe,failfase failback,forking,於阿里的定義。failover 失敗自動切換 當出現失敗,重試其它伺服器,通常用於讀操作 推薦使用 重試會帶來更長延遲。failfast 快速失敗 只發起一次呼叫,失敗立即報錯,通常用於非冪等性的寫...
dubbo 6 dubbo的攔截(過濾)機制
二 在需要的專案引用 三 注意 與很多框架一樣,dubbo也存在攔截 過濾 機制,可以通過該機制在執行目標程式前後執行我們指定 的 dubbo的filter機制,是專門為服務提供方和服務消費方呼叫過程進行攔截設計的,每次遠端方法執行,該攔截都會被執行。這樣就為開發者提供了非常方便的擴充套件性,比如為...