在日常的開發工作中,為了保證落庫數據的完整性,參數校驗絕對是必不可少的一部分,本篇文章就來講解下在項目中該如何優雅的校驗參數。 假設有一個新增學員的介面,一般第一步我們都會先校驗學員信息是否正確,然後才會落庫,簡單起見,假設新增學員時只有2個欄位:姓名、年齡。 @Data public class ...
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: 當路由結果為空,降級請求tag為空的提供者。
- force=true: 當路由結果為空,直接返回異常。
- 路由規則的優先順序
- priority=1: 路由規則的優先順序,用於排序,優先順序越大越靠前執行,可不填,預設為 0。
- 配置是否只對某幾個特定實例生效。
- 所有實例:
addresses: ["0.0.0.0"]
或addresses: ["0.0.0.0:*"]
具體由side值決定。 - 指定實例:
addersses[實例地址列表]
。
- 所有實例:
- 要修改的條件規則。
- => 之前的為消費者匹配條件,所有參數和消費者的 URL 進行對比,當消費者滿足匹配條件時,對該消費者執行後面的過濾規則。
- => 之後為提供者地址列表的過濾條件,所有參數和提供者的 URL 進行對比,消費者最終只拿到過濾後的地址列表。
- 如果匹配條件為空,表示對所有消費方應用,如:=> host != 10.20.153.11
- 如果過濾條件為空,表示禁止訪問,如:host = 10.20.153.10 =>
結果驗證
選擇和條件路由配置相關的應用,觸發該調用驗證。
原文首於 Dubbo 官網:https://cn.dubbo.apache.org/zh/overview/tasks/traffic-management/traffic-routing/
歡迎在 https://github.com/apache/dubbo 給 Dubbo Star。
搜索關註官方微信公眾號:Apache Dubbo,瞭解更多業界最新動態,掌握大廠面試必備 Dubbo 技能