概述
金絲雀發布是指在應用發布時,可以為新版本的應用打上gray的標簽,通過按流量比例路由或按內容路由的方式,將灰度流量引入帶有gray標簽的應用中,從而達到小規模驗證的目的。
版本限制
| 框架 | 限制 | 詳情 |
|---|---|---|
| Spring Cloud | Spring Cloud Edgware及以上版本 | 客戶端:Feign、RestTemplate; 負載均衡:Ribbon、LoadBalancer。 |
| Dubbo | 2.5.3+ | 支持Alibaba Dubbo、Apache Dubbo。 |
| 注冊中心 | Nacos、Eureka、Zookeeper | 無。 |
| jdk版本 | 1.8+ | 無。 |
操作步驟
假設有兩個服務app-a和app-b,調用關系為app-a->app-b,這兩個服務都已接入微服務治理中心。此時app-b有灰度應用需要發布,需要實現在app-a調用app-b的過程中,將灰度流量引入到app-b的灰度應用中進行小規模驗證。
部署app-b灰度應用
部署app-b灰度應用,需為灰度應用打上灰度標簽,主要提供如下兩種方式:
為云容器引擎集群應用設置標簽,可以為容器添加環境變量MSE_SERVICE_TAG=gray。
為ECS應用設置標簽,在應用啟動時,添加JVM啟動參數-Dctgcloud.service.tag=gray。
查看金絲雀頁面
完成灰度應用部署后,即可查看應用當前存在的標簽。
1.登錄微服務治理中心控制臺。
2.在左側導航欄選擇 微服務治理中心 ->應用治理。
3.在應用治理頁面單擊目標應用卡片。
4.在左側導航欄選擇流量治理 - 金絲雀,即可查看灰度應用標簽。
設置灰度規則并引入流量
金絲雀提供兩種灰度規則,分別是按比例路由和按內容路由,按比例路由指的是將指定比例的流量路由到灰度應用,按內容路由是指針對請求頭、請求參數或請求體中的內容做匹配,將滿足匹配規則的流量路由到灰度應用。
按比例路由
1.登錄微服務治理中心控制臺。
2.在左側導航欄選擇 微服務治理中心 ->應用治理。
3.在應用治理頁面單擊目標應用卡片。
4.在左側導航欄選擇流量治理 - 金絲雀,點擊引入流量。
5.設置灰度應用的流量比例。
按內容路由
1.登錄微服務治理中心控制臺。
2.在左側導航欄選擇 微服務治理中心 ->應用治理。
3.在應用治理頁面單擊目標應用卡片。
4.在左側導航欄選擇流量治理 - 金絲雀,點擊引入流量。
5.設置灰度應用的內容規則。
按內容灰度參數說明:
| 參數 | 說明 |
|---|---|
| 框架類型 | Spring Cloud/Dubbo。 |
| Path | Spring Cloud為接口路徑,Dubbo為接口。 |
| 條件模式 | 滿足一個條件,或滿足所有條件。 |
| 條件列表 | 可以設置Header、Cookie、Parameter和Body Content四種參數類型。 |
| 是否鏈路傳遞 | 代表開啟全鏈路流控。 |
完成發布
完成小規模流量驗證后,點擊發布完成,未打標版本的流量比例會被調整為100%,此時所有的流量都會轉發到未打標應用中。
若發布失敗,點擊回滾,配置的規則會被清楚,此時所有的流量都會轉發到未打標應用中。