本文通過樣本示範如何在SAE上實現全鏈路灰階發布, 可以在不需要修改您的任何業務代碼的情況下,實現全鏈路流量控制。
準備工作
本文通過樣本為您示範ALB網關全鏈路灰階功能。假設應用的架構由ALB網關以及後端的微服務架構(Spring Cloud)組成,後端調用鏈路有3個微服務:購物車(A)、交易中心(B)、庫存中心(C),可以通過用戶端或HTML來訪問後端服務,這些服務之間通過Nacos註冊中心實現服務發現。
部署SAE Demo應用
下載Demo。
部署主幹鏈路應用。
部署主幹鏈路應用(A、B、C)。具體操作,請參見將應用的服務註冊與發現中心更改為Nacos。
部署灰階鏈路應用(A-gray、B-gray、C-gray),在啟動命令中添加啟動參數
-Dalicloud.service.tag=gray用於區別主幹鏈路應用。
部署時,如果需要使用獨立的註冊中心,需要添加啟動參數-Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false。
部署Spring Cloud Gateway或Zuul網關
應用可以使用相同網域名稱,通過不同路徑流量轉寄實現請求路由分發。具體操作,請參見為應用綁定CLB並產生應用的公網或私網訪問IP。
為流量配置特定Header實現全鏈路灰階
有些用戶端無法改寫網域名稱,希望能在訪問www.base.com時,通過傳入不同的Header來路由到灰階環境。例如下圖中,通過添加x-mse-tag:gray這個Header,來訪問灰階(gray)環境。
x-mse-tag這個Header僅適用於本文描述的情境。請勿在其他情境中,尤其是在應用的灰階規則中使用該Header。

結果驗證。
訪問
www.base.com路由到基準(base)環境。執行以下curl命令:
curl -H"Host:www.base.com" http://106.14.XX.XX/a執行結果:
A[172.18.XX.XX] -> B[172.18.XX.XX] -> C[172.18.XX.XX]
如果想訪問灰階環境,只需要在請求中增加一個Header:
x-mse-tag:gray。執行以下curl命令:
curl -H"Host:www.base.com" -H"x-mse-tag:gray" http://106.14.XX.XX/a執行結果:
Agray[172.18.XX.XX] -> Bgray[172.18.XX.XX] -> Cgray[172.18.XX.XX]%可以看到CLB Ingress根據這個Header直接路由到了A的灰階(gray)環境中。