Service MeshASM支援將應用的相關版本(或者其他特徵)隔離成一個獨立的運行環境(即泳道),然後通過設定泳道規則,將滿足規則的請求流量路由到目標版本(或者其他特徵)的應用上。本文介紹流量泳道的概念、使用情境,以及嚴格與寬鬆兩種模式的流量泳道。
功能介紹
灰階發布會根據請求內容或者請求流量的比例將線上流量的一小部分轉寄至服務的新版本,待灰階驗證通過後,逐步調大新版本的請求流量,是一種循序漸進的發布方式。
當服務之間存在調用鏈路時,對服務的灰階發布往往不局限於單個服務,而是需要對服務的整條請求鏈路進行環境隔離與流量控制,即保證灰階流量只發往調用鏈路中服務的灰階版本,實現調用鏈路之間相互隔離的隔離環境。
具有相同版本(或其他特徵)的不同服務組成的一個調用鏈路隔離環境稱為泳道。通過使用流量泳道功能,您僅需制定少量的治理規則,便可構建從網關到整個後端服務的多個流量隔離環境,有效保障多個服務順利安全發布以及服務多版本並行開發,進一步促進業務的快速發展。
流量泳道分為嚴格與寬鬆兩種模式,詳細說明如下。
strict 模式的流量泳道
在strict 模式下,每條流量泳道中包含調用鏈路上的全部服務。該模式對於您的應用程式無任何要求,只需配置流量泳道即可實現。更多資訊,請參見使用strict 模式流量泳道實現全鏈路流量管理。
寬鬆模式的流量泳道
在寬鬆模式下,您只需要確保建立一條包含調用鏈路中所有服務的泳道:基準泳道。其它泳道可以不包含調用鏈路上的全部服務。當一個泳道中的服務進行相互調用時,若目標服務在當前泳道中不存在,則請求將被轉寄到基準泳道中的相同服務,並在請求目標存在當前泳道中存在時將請求重新轉寄回當前泳道。使用寬鬆模式的流量泳道時,您的應用程式必須包含一個能夠在整條調用鏈路中透傳的要求標頭(鏈路透傳要求標頭),且鏈路透傳要求標頭的值對於每條請求都各不相同。更多資訊,請參見情境一:在鏈路中未透傳引流要求標頭和情境二:在鏈路中已透傳引流要求標頭。
strict 模式與寬鬆模式的對比
流量泳道模式 | 優勢 | 限制 | 使用情境 |
strict 模式 | 對泳道中的應用程式無要求。 | 每條流量泳道中都必須包含調用鏈路中的所有服務。 | 適用於對整條調用鏈路進行灰階發布的情境。當對整條鏈路進行灰階發布時,strict 模式對應用程式本身的要求更低。 |
寬鬆模式 | 要求應用程式套件組合含一個能夠在整條調用鏈路中傳遞的要求標頭,且鏈路透傳要求標頭的值對於每條請求都各不相同。 | 只需要保證一條基準泳道包含調用鏈路中所有服務,其餘泳道中的服務要求可以回退到基準泳道中。 | 當應用程式在調用鏈路中存在透傳要求標頭的行為時,寬鬆模式可以實現更為靈活的泳道使用情境。例如,只發布了調用鏈路中的部分服務的新版本,基於這些新版本服務構建測試環境的情境。 |