前文再續,上一回我們完成了用戶的登錄邏輯,將之前用戶管理模塊中添加的用戶賬號進行賬號和密碼的校驗,過程中使用圖形驗證碼強制進行人機交互,防止賬號的密碼被暴力破解。本回我們需要為登錄成功的用戶生成Token,並且通過Iris的中間件(Middleware)進行鑒權操作。 Iris模板復用 在生成Tok ...
Dubbo提供流量灰度的服務治理能力,可以在無需重啟應用的情況下,配置標簽路由規則和條件路由實現灰度發佈。
Dubbo可以通過XML配置,註解配置,動態配置實現流量灰度,這裡主要介紹動態配置的方式,其他配置方式請參考舊文檔配置
開始之前
請確保成功運行Dubbo-Admin
背景信息
在產品開發中會遇到需求變化、版本迭代的場景,為了兼顧需求變化和系統穩定,發佈要儘可能平滑,影響人群要由少到多,一旦有問題馬上回滾。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-Admin控制台
- 在左側導航欄選擇服務治理 > 標簽路由。
- 點擊創建按鈕,在創建新標簽規則面板中,填寫規則內容,然後單擊保存。
規則詳解
配置模板
---
force: false
runtime: true
enabled: true
key: governance-tagrouter-provider
tags:
- name: tag1
addresses: ["127.0.0.1:20880"]
- name: tag2
addresses: ["127.0.0.1:20881"]
...
對於流量灰度場景,只需要理清楚以下問題基本就知道配置該怎麼寫了:
- 要修改服務所屬提供者應用的配置。
- 應用:
scope: application, key: app-name
(還可使用services
指定某幾個服務)。
- 應用:
- 當路由結果為空,是否強制返回。
- force=false: 當路由結果為空,降級請求tag為空的提供者。
- force=true: 當路由結果為空,直接返回異常。
- 路由規則的優先順序
- priority=1: 路由規則的優先順序,用於排序,優先順序越大越靠前執行,可不填,預設為 0。
- 配置是否只對某幾個特定實例生效。
- 所有實例:
addresses: ["0.0.0.0"]
或addresses: ["0.0.0.0:*"]
具體由side值決定。 - 指定實例:
addersses[實例地址列表]
。
- 所有實例:
- 要修改的標簽名。
結果驗證
選擇和流量灰度配置相關的應用,觸發該調用驗證。
原文首於 Dubbo 官網:https://cn.dubbo.apache.org/zh/overview/tasks/traffic-management/traffic-gray/
歡迎在 https://github.com/apache/dubbo 給 Dubbo Star。
搜索關註官方微信公眾號:Apache Dubbo,瞭解更多業界最新動態,掌握大廠面試必備 Dubbo 技能