您可以為部署在EDAS K8s環境中的Spring Cloud和Dubbo微服務應用配置全鏈路流量控制,將具有一定特徵的流量路由到目標版本應用。
前提條件
為應用配置全鏈路流量控制,需要提前完成以下工作:
部署新版本應用或升級應用。具體操作,請參見升級和復原應用概述(K8s)。
如果入口應用是Spring Cloud Gateway或Netflix Zuul微服務網關,需提前建立微服務網關並綁定EDAS微服務空間。
使用Spring Cloud Gateway作為入口網關時,需要Spring Cloud Gateway的版本在2.1.x及以上。
背景資訊
本文以電商架構中的下單情境為例介紹全鏈路流控功能。
客戶下單後流量從入口應用(或者微服務網關)進來,調用交易中心,交易中心再調用商品中心,商品中心調用下遊的庫存中心。
交易中心和商品中心各有兩個新版本(1和2)在運行,需要對這兩個新版本進行灰階驗證。此時在入口應用(或者微服務網關)上期望將滿足特定流控規則的請求流量路由到新版本,其餘流量全部路由到線上(正式)版本。

建立泳道組
登入EDAS控制台。
在左側導覽列選擇。
在全鏈路流量控制頁面頂部功能表列選擇地區,在頁面中選擇目標微服務空間。
在全鏈路流量控制頁面,單擊建立。
如果您選擇的微服務空間內已經建立過泳道組,則在選擇泳道組文字框右側,單擊建立。
說明一個微服務空間內,最多建立2個泳道組。
在建立泳道對話方塊設定泳道組相關參數,然後單擊確定。

配置項
描述
微服務空間
在全鏈路流量控制頁面所選目標微服務空間,不可編輯。
泳道組名稱
自訂設定泳道組的名稱。支援大小寫字母、數字、短劃線(-)和底線(_),長度不超過64個字元。
入口類型
選擇入口應用(在EDAS部署應用/網關)。
入口應用
根據實際情況選擇目標應用。
泳道組涉及所有應用
單擊添加流控鏈路涉及應用,選擇您的入口應用或入口網關所涉及的所有相關服務。
建立泳道組完成後,在全鏈路流量控制頁面的泳道組涉及應用地區出現您所建立的泳道組。請檢查入口應用和所涉及的應用是否正確,如需變更泳道組資訊,請單擊編輯並修改相關資訊。
建立泳道
在全鏈路流量控制頁面上方選擇建立和泳道組時相同的微服務空間,然後底部單擊建立泳道。
重要加入全鏈路流量控制的應用,將不再支援金絲雀發布。
在建立流控泳道面板設定流控泳道相關參數,然後單擊確定。

配置項
描述
微服務空間
預設為在全鏈路流量控制頁面選擇的微服務空間,而且需要保證該微服務空間之前已經建立了泳道組,不可編輯。
流控泳道名稱
自訂設定流控泳道的名稱。支援大小寫字母、數字、短劃線(-)和底線(_),長度不超過64個字元。
接收打標流量應用
單擊添加泳道應用,在所屬泳道組內選擇應用。
說明您可以在同一個流控泳道選擇多個應用,也可以為每個應用建立一個流控泳道。
不同規格的EDAS,泳道組和泳道的配額不一樣。更多內容,請參見全鏈路流量控制簡介。
建立泳道時,支援不設定接收打標流量應用,可在編輯泳道時設定接受打標流量應用。
流控規則
開關
流控路由開關,預設開啟。
Path
HTTP相對路徑,置空表示任意路徑。請根據實際情況設定。
條件模式
請根據實際需要選擇條件模式,包含同時滿足下列條件和滿足下列任一條件:
同時滿足下列條件:必須同時滿足設定的所有條件才會生效。
滿足下列任一條件:只需滿足任一條件即可生效。
條件列表
單擊添加規則條件,可根據需要添加多項條件。您可以設定Cookie、Header、Parameter和等不同類型的條件。
本樣本中添加的條件為:
參數類型為Parameter,參數env=red,即滿足該條件時,流量進入到1.0版本的服務中。
參數類型為Parameter,參數env=blue,即滿足該條件時,流量進入到2.0版本的服務中。
建立泳道成功後,在全鏈路流量控制頁面的流控分配地區出現您所建立的泳道。請檢查泳道名稱、流控規則和打標應用是否正確,如需修改泳道資訊,請單擊編輯修改泳道相關資訊。
可選:如需建立多條泳道,在流控分配地區,單擊建立泳道並設定泳道相關參數。
說明一個泳道組內,最多支援建立5條泳道。
驗證特徵流量路由到目標應用
擷取入口應用或者入口網關的Server Load Balancer的地址。
在應用管理>應用列表頁面,單擊入口應用的名稱。
在應用總覽頁面的訪問方式配置地區,複製並記錄Server Load Balancer的地址。
在瀏覽器或者其他工具上多次訪問泳道組內的打標應用。
假設在瀏覽器中輸入http://ip:port/**?env=red訪問交易中心應用,返回結果只會有一種,即表示實現了將特徵流量路由到目標應用。
其中**是流控規則中的Path,env=red是流控規則中的條件。
A2[172.20.**.**] -> B2[172.20.**.**] -> C[172.20.**.**]
如何配置兩個版本的相同應用
用相同的包建立兩個相同的應用,且註冊相同服務。
將其中一個應用拉入泳道,該應用即為灰階環境中的應用。然後用灰階版本的包在灰階環境中部署應用即得到兩個版本的相同應用。