概述
在微服務云應用平臺中支持對微服務應用進行全鏈路流量控制。全鏈路流量控制功能可以幫助您快速靈活地創建一個流量控制環境,將具有一定特征的流量路由到目標版本應用。
背景信息
在微服務云應用平臺中,當您部署的應用存在升級版本時,由于應用間的調用是隨機的,會導致無法將具有一定特征的流量路由到應用的目標版本。全鏈路流量控制功能將應用的相關版本隔離成一個獨立的運行環境(即泳道),通過設置流控路由規則,將滿足規則的請求流量路由到目標版本應用。
本文以電商架構中的下單場景為例介紹全鏈路流控功能。
客戶下單后流量從入口應用(或者微服務網關)進來,調用商城應用,商城應用再調用訂單應用,訂單應用調用下游的支付應用。
商城應用和訂單應用各有兩個新版本(V1.1和V1.2)在運行,需要對這兩個新版本進行灰度驗證。此時在入口應用(或者微服務網關)上期望將滿足特定流控規則的請求流量路由到新版本,其余流量全部路由到線上(基線)版本。
在示意圖中,商城應用和訂單應用分別存在兩個升級版本(V1.1和V1.2),此時訪問請求會隨機轉發到各個版本,無法進行流量控制。借助全鏈路流量控制功能,將版本V1.1設置為tag1泳道;將版本V1.2設置為tag2泳道,并在入口應用處設置流控規則,當進入入口應用的請求流量滿足流控規則時,則將請求流量路由到目標泳道。
名詞解釋
入口應用:微服務體系內的流量入口。入口應用可以是Spring Cloud Gateway、Netflix Zuul Gateway引擎類型網關或者Spring Boot、Spring MVC、Dubbo應用。
泳道:為相同版本應用定義的一套隔離環境。只有滿足了流控路由規則的請求流量才會路由到對應泳道里的打標應用。一個應用可以屬于多個泳道,一個泳道可以包含多個應用,應用和泳道是多對多的關系。
泳道組:泳道的集合。泳道組的作用主要是為了區分不同團隊或不同場景。
使用限制
加入全鏈路流量控制的應用,將不再支持金絲雀發布。
使用Spring Cloud Gateway作為入口網關時,需要Spring Cloud Gateway的版本在2.1.x及以上。