請求路由
在 Dubbo-Admin 中根據請求條件進行路由
Dubbo 提供了動態創建條件路由的服務治理能力,無需重啟應用即可根據請求發起方和方法進行路由。
Dubbo 可以通過 XML 配置、註解配置和動態配置實現根據請求條件的動態路由。這裡我們主要介紹動態配置方法,其他配置方法請參考舊文檔 配置
開始之前
請確保 Dubbo-Admin 成功運行
背景資訊
在黑白名單、排除預發佈機器、只暴露部分機器、按環境隔離等業務場景下,需要在發起 RPC 調用前,通過路由規則過濾目標服務地址,並將過濾後的地址作為最終 RPC 調用的候選地址。Dubbo-Admin 提供了條件路由功能,可以幫助您配置路由規則以滿足業務場景。
步驟
條件路由
- 登錄 Dubbo-Admin 控制台
- 在左側導航窗格中,選擇服務治理 > 條件路由。
- 點擊「創建」按鈕,在「創建新路由規則」面板中填寫規則內容,然後點擊「保存」。
詳細規則
配置模板
---
scope: application/service
force: true
runtime: true
enabled: true
key: app-name/group+service+version
conditions:
- application=app1 => address=*:20880
- method=sayHello => address=*:20880
對於條件路由場景,您只需要明確以下問題即可知道如何編寫配置
- 要修改消費者應用的配置還是服務的配置。
- 應用程式:
scope: application, key: app-name
(您也可以使用services
指定某些服務)。 - 服務:
scope: service, key:group+service+version
。
- 應用程式:
- 當路由結果為空時,是否強制返回。
- force=false:當路由結果為空時,降級標籤為空的提供者。
- force=true:當路由結果為空時,將直接返回異常。
- 路由規則的優先級
- priority=1:路由規則的優先級,用於排序,優先級越高,執行順序越前,可以留空,默認為 0。
- 此配置是否僅對特定實例生效。
- 所有實例:
addresses: ["0.0.0.0"]
或addresses: ["0.0.0.0:*"]
,取決於 side 值。 - 指定實例:
addresses: [實例地址列表]
。
- 所有實例:
- 要修改的條件規則。
- => 前者是消費者匹配條件。所有參數與消費者的 URL 進行比較。當消費者符合匹配條件時,會對消費者執行後續的過濾規則。
- => 後者是供應商地址列表的過濾條件。所有參數與供應商的 URL 進行比較,消費者最終只會取得過濾後的地址列表。
- 如果匹配條件為空,表示適用於所有消費者,例如:=> host != 10.20.153.11
- 如果過濾條件為空,則禁止訪問,例如:host = 10.20.153.10 =>
結果驗證
選擇與條件路由配置相關的應用程式來觸發呼叫驗證。
上次修改日期:2023 年 2 月 9 日:更新 docsy 至 0.6.0 (#2141) (20081578326)