dubbo讀書筆記13 路由規則

2021-09-29 08:04:27 字數 2541 閱讀 3397

在此檢視老版本路由規則(2.6.x or before)

路由規則在發起一次rpc呼叫前起到過濾目標伺服器位址的作用,過濾後的位址列表,將作為消費端最終發起rpc呼叫的備選位址。

後續我們計畫在2.6.x版本的基礎上繼續增強指令碼路由功能,老版本指令碼路由規則配置方式請參見開篇鏈結。

您可以隨時在服務治理控制台dubbo-admin寫入路由規則

各欄位含義

key明確規則體作用在哪個服務或應用。必填

enabled=true當前路由規則是否生效,可不填,預設生效。

force=false當路由結果為空時,是否強制執行,如果不強制執行,路由結果為空的路由規則將自動失效,可不填,預設為false

runtime=false是否在每次呼叫時執行路由規則,否則只在提供者位址列表變更時預先執行並快取結果,呼叫時直接從快取中獲取路由結果。如果用了引數路由,必須設為true,需要注意設定會影響呼叫的效能,可不填,預設為false

priority=1路由規則的優先順序,用於排序,優先順序越大越靠前執行,可不填,預設為0

conditions定義具體的路由規則內容。必填

conditions規則體

`conditions`部分是規則的主體,由1到任意多條規則組成,下面我們就每個規則的配置語法做詳細說明:
格式

表示式

引數支援:

條件支援:

值支援:

condition示例

=> host != 172.22.3.91
host != 10.20.153.10,10.20.153.11 =>
host = 10.20.153.10,10.20.153.11 =>
=> host = 172.22.3.1*,172.22.3.2*

method = find*,list*,get*,is* => host = 172.22.3.94,172.22.3.95,172.22.3.96

method != find*,list*,get*,is* => host = 172.22.3.97,172.22.3.98

host != 172.22.3.* => host != 172.22.3.*
=> host = $host
標籤路由通過將某乙個或多個服務的提供者劃分到同乙個分組,約束流量只在指定分組中流轉,從而實現流量隔離的目的,可以作為藍綠發布、灰度發布等場景的能力基礎。

provider

標籤主要是指對provider端應用例項的分組,目前有兩種方式可以完成例項分組,分別是動態規則打標靜態規則打標,其中動態規則相較於靜態規則優先順序更高,而當兩種規則同時存在且出現衝突時,將以動態規則為準。

consumer

rpccontext.getcontext().setattachment(constants.request_tag_key,"tag1");
請求標籤的作用域為每一次 invocation,使用 attachment 來傳遞請求標籤,注意儲存在 attachment 中的值將會在一次完整的遠端呼叫中持續傳遞,得益於這樣的特性,我們只需要在起始呼叫時,通過一行**的設定,達到標籤的持續傳遞。

目前僅僅支援 hardcoding 的方式設定 requesttag。注意到 rpccontext 是執行緒繫結的,優雅的使用 tagrouter 特性,建議通過 servlet 過濾器(在 web 環境下),或者定製的 spi 過濾器設定 requesttag。

格式

addresses, 當前標籤包含的例項列表

降級約定

request.tag=tag1時優先選擇 標記了tag=tag1的 provider。若集群中不存在與請求標記對應的服務,預設將降級請求 tag為空的provider;如果要改變這種預設行為,即找不到匹配tag1的provider返回異常,需設定request.tag.force=true

request.tag未設定時,只會匹配tag為空的provider。即使集群中存在可用的服務,若 tag 不匹配也就無法呼叫,這與約定1不同,攜帶標籤的請求可以降級訪問到無標籤的服務,但不攜帶標籤/攜帶其他種類標籤的請求永遠無法訪問到其他標籤的服務。

注意:乙個服務只能有一條白名單規則,否則兩條規則交叉,就都被篩選掉了 ↩︎

dubbo學習 五 路由

dubbo的路由規則,是基於invoker集合進行篩選,過濾出可用的invoker集合用於後續的執行。閘道器黑白名單場景如下所示 第二類是動態列表,比如來自flink按時間區間動態計算的閾值計算出來的清單,如 在dubbo閘道器下,黑白名單場景卻不適合使用dubbo的路由規則來執行,以常用的cond...

(六)路由規則

路由規則 路由功能,就是 消費者 提供者 即是根據配置的路由規則,找到提供者,比如,讀寫分離 路由規則 讀路由 method find list get is host 172.22.3.94,172.22.3.95,172.22.3.96 這條規則會判斷讀方法,會呼叫172.22.3.94,172...

作業13 讀書筆記

我閱讀的演算法書籍是李煜東的 演算法競賽高階指南 翻開目錄,我第一眼關注到的就是資料結構高階這一類,畢竟上學期剛學資料結構,相信這一塊是能夠最快接受的知識點。第一節講的是並查集,這還是比較簡單。並查集就分為兩步,第一步是查詢乙個元素屬於哪個集合,第二步是把兩個小集合合併成乙個大集合。那麼合併集合的依...