dubbo學習 五 路由

2022-05-03 20:57:11 字數 841 閱讀 8907

dubbo的路由規則,是基於invoker集合進行篩選,過濾出可用的invoker集合用於後續的執行。

閘道器黑白名單場景如下所示:

第二類是動態列表,比如來自flink按時間區間動態計算的閾值計算出來的清單,如:

在dubbo閘道器下,黑白名單場景卻不適合使用dubbo的路由規則來執行,以常用的conditionrouter來解釋。

從conditionrouter的matchcondition方法可以得知,規則的定義,來自router配置,規則匹配的資料引數則來自consumer&provider的url。基於url就存在乙個嚴重的問題,即受限於資料量&重新整理成本。

在黑白名單場景下,規則的命中規模可膨脹,可收縮,也可以劇烈變化。如果使用dubbo的條件路由,則會面臨url劇烈變化導致同步成本劇增,url膨脹導致同步效率極差。

針對這種情況,可以自定義router實現,不從url獲取引數與值,僅根據呼叫上下文來獲取資料。

從原始碼角度來看,router的觸發有2個地方。其一是在registydirectory在收到url更新時觸發的重新整理invoker來觸發的,其二是在directory的list時會對提取到的invoker集合進行router處理。故,可以自定義乙個router實現,在這乙個環節進行黑白名單處理。

但是,實際場合,一般不會通過這種方式來處理,閘道器實現時,目前依賴的是spring webflux框架,在接入http請求時,可以擴充套件filter來支援,並不需要下層到dubbo的執行層面由路由來支援。當然,如果是dubbo直接對外另說。

閘道器灰度路由的場景:

灰度路由一般是某個應用的某個url基於一定的條件定向**請求到指定機器上。

這種情況下,路由規則也可以以篩選器的身份參與進來。

springcloud 的學習(五) 路由閘道器

滴水穿石 路由閘道器 依賴 dependency groupid org.springframework.cloud groupid artifactid spring cloud starter zuul artifactid dependency 主方法新增注釋 enablezuulproxy ...

dubbo讀書筆記13 路由規則

在此檢視老版本路由規則 2.6.x or before 路由規則在發起一次rpc呼叫前起到過濾目標伺服器位址的作用,過濾後的位址列表,將作為消費端最終發起rpc呼叫的備選位址。後續我們計畫在2.6.x版本的基礎上繼續增強指令碼路由功能,老版本指令碼路由規則配置方式請參見開篇鏈結。您可以隨時在服務治理...

WEBAPI學習之路(1) 路由

每乙個做後端的程式猿必須知道的http服務,所以webapi是.net軟體開發工程師必須會的,在這裡留下我學習webapi的一些心得和體會,我們從最基礎的一點一點學習。從mvc到webapi,路由機制一直是伴隨著這些技術的乙個重要組成部分。webapi的學習最基礎也是第乙個應該學習的就應該是weba...