標簽路由通過給流量打標、給機器打標、增加路由能力,從而約束符合特征流量只調用到對應標簽的節點上,實現按流量特征與機器標簽路由的目的。標簽路由可以作為藍綠發布、灰度發布等場景的能力基礎。
前提條件
使用限制
該內容主要針對微服務治理中心,您的應用需要接入MSE服務治理中心。
標簽路由能力支持的Java版本及框架詳見微服務治理支持的Java框架。
應用場景
多版本開發測試
多個版本并行開發時,需要為每個版本準備一套開發環境。如果版本較多,開發環境成本會非常大。流量隔離方案可以在多版本開發測試時大幅度降低資源成本。使用基于標簽路由的全鏈路流量隔離機制,可以將特定的流量路由到指定的開發環境。例如,在開發環境1中,為應用B(V1.1)和應用D(V1.1)創建Tag1標簽,并配置對應的路由規則。入口應用A調用B時,會判斷流量是否滿足路由規則。如果滿足,路由到開發環境1中應用B的V1.1版本;如果不滿足,路由到基線環境中的應用B的V1版本。應用C調用應用D時,同樣根據流量決定路由到應用D的V1版本或V1.1版本。
相同應用的多版本間流量隔離
如果一個應用有多個版本在線上同時運行,部署在不同環境中,例如日常環境和特殊環境。那么可以使用標簽路由對不同環境中的不同版本進行流量隔離,將秒殺訂單流量或不同渠道訂單流量路由到特殊環境,將正常的流量路由到日常環境。即使特殊環境異常,本應進入特殊環境的流量也不會進入日常環境,從而不會影響日常環境的使用。
A/B Testing
線上有多個應用版本同時運行,期望對不同版本的應用進行A/B Testing。那么可以使用標簽路由的全鏈路流量控制功能,將地域A的客戶流量路由到V1版本,地域B的客戶流量路由到V1.1版本。通過對不同版本的驗證,達到降低新產品或新特性的發布風險,為產品創新提供保障的目的。
在ACK中為應用接入MSE微服務治理并設置標簽
本文以spring-cloud-a為例,分別給應用打上tag1和tag2兩個標簽,將應用劃分為2個分組。如果請求符合您配置的特征,會調用到您指定標簽的節點;如果沒有匹配上任何規則,則按照設定的流量比例調用到對應節點。
- 登錄容器服務控制臺。
- 在左側導航欄,選擇集群,然后單擊目標集群名稱。
- 在左側導航欄,選擇 。
- 在無狀態頁面右上角,單擊使用鏡像創建。
在創建應用頁面分別創建兩個無狀態應用spring-cloud-a-tag1和spring-cloud-a-tag2。具體操作,請參見創建無狀態工作負載Deployment。
參數
說明
副本數量
設置為1。
類型
選擇無狀態(Deployment)。
鏡像名稱
選擇您構建的鏡像即可。您也可以選擇預先構建好的鏡像
registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/spring-cloud-a:3.0.1
。按照以下步驟將應用spring-cloud-a-tag1和spring-cloud-a-tag2接入MSE微服務治理,并設置標簽。
返回無狀態頁面,選擇命名空間,找到創建的應用(spring-cloud-a-tag1和spring-cloud-a-tag2)。在操作列單擊更多 > 查看Yaml。
在編輯 YAML對話框,分別為spring-cloud-a-tag1和spring-cloud-a-tag2在
下添加以下Labels,接入MSE微服務治理。labels: msePilotAutoEnable: "on" msePilotCreateAppName: <your-app-name> alicloud.service.tag: <tag>
說明將<your-app-name>替換為您在MSE微服務治理實際使用的應用名稱,即spring-cloud-a。
<tag>替換為tag1或tag2。
單擊更新。
在MSE微服務治理中為應用創建標簽路由
登錄MSE治理中心控制臺,并在頂部菜單欄選擇地域。
在左側導航欄,選擇治理中心 > 應用治理。
在應用列表頁面,選擇對應的微服務命名空間,搜索在ACK創建的應用名稱spring-cloud-a,并單擊進入。
在左側導航欄,單擊流量治理,然后選擇標簽路由頁簽查看當前的標簽路由配置。
在標簽路由列表右側單擊流量分配,設置各標簽的流量比例,然后單擊保存。
單擊流量規則下方的添加。在創建標簽路由面板配置參數,然后單擊確定即可完成標簽路由的創建。
說明標簽路由優先采用流量規則里的路由條件,如果滿足該流量規則,則會去該規則對應標簽的Pod,否則按照流量比例去對應標簽的Pod。
參數
說明
路由名稱
標簽路由規則名稱,例如test-springcloud。
應用
顯示應用名稱,例如spring-cloud-a。
標簽
顯示在ACK中為應用設置的標簽,例如tag2。
應用實例
顯示spring-cloud-a應用中設置了該標簽的應用實例的IP及端口。
流量規則
框架類型
包含Spring Cloud和Dubbo,根據應用實際框架選擇。
Spring Cloud:僅支持設置URL的Path,例如
/getIp
。Dubbo:支持選擇服務和接口。
條件模式
包含同時滿足下列條件和滿足下列任一條件,根據實際需求選擇。
條件列表
框架類型為Spring Cloud:可以分別設置Parameter、Cookie、Header和Body Content四種類型的參數。例如: 參數類型為Parameter設置
name=xiaoming
、參數類型為Cookie設置hello = "world" 或 "world2"
。框架類型為Dubbo:需要設置參數值獲取表達式。
結果驗證
根據實際業務需求進行驗證。
默認100%流量會按照規則,調用到tag1節點。
匹配規則的流量,會調用到對應標簽的節點。
相關文檔
實現全鏈路灰度可參見全鏈路灰度。