標籤路由通過給流量打標、給機器打標、增加路由能力,從而約束符合特徵流量只調用到對應標籤的節點上,實現按流量特徵與機器標籤路由的目的。標籤路由可以作為藍綠髮布、灰階發布等情境的能力基礎。
前提條件
使用限制
該內容主要針對微服務治理中心,您的應用需要接入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節點。

匹配規則的流量,會調用到對應標籤的節點。

相關文檔
實現全鏈路灰階可參見全鏈路灰階。