服务网格ASM支持将应用的相关版本(或者其他特征)隔离成一个独立的运行环境(即泳道),然后通过设置泳道规则,将满足规则的请求流量路由到目标版本(或者其他特征)的应用上。本文介绍流量泳道的概念、使用场景,以及严格与宽松两种模式的流量泳道。
功能介绍
灰度发布会根据请求内容或者请求流量的比例将线上流量的一小部分转发至服务的新版本,待灰度验证通过后,逐步调大新版本的请求流量,是一种循序渐进的发布方式。
当服务之间存在调用链路时,对服务的灰度发布往往不局限于单个服务,而是需要对服务的整条请求链路进行环境隔离与流量控制,即保证灰度流量只发往调用链路中服务的灰度版本,实现调用链路之间相互隔离的隔离环境。
具有相同版本(或其他特征)的不同服务组成的一个调用链路隔离环境称为泳道。通过使用流量泳道功能,您仅需制定少量的治理规则,便可构建从网关到整个后端服务的多个流量隔离环境,有效保障多个服务顺利安全发布以及服务多版本并行开发,进一步促进业务的快速发展。
流量泳道分为严格与宽松两种模式,详细说明如下。
严格模式的流量泳道
在严格模式下,每条流量泳道中包含调用链路上的全部服务。该模式对于您的应用程序无任何要求,只需配置流量泳道即可实现。更多信息,请参见使用严格模式流量泳道实现全链路流量管理。
宽松模式的流量泳道
在宽松模式下,您只需要确保创建一条包含调用链路中所有服务的泳道:基线泳道。其它泳道可以不包含调用链路上的全部服务。当一个泳道中的服务进行相互调用时,若目标服务在当前泳道中不存在,则请求将被转发到基线泳道中的相同服务,并在请求目标存在当前泳道中存在时将请求重新转发回当前泳道。使用宽松模式的流量泳道时,您的应用程序必须包含一个能够在整条调用链路中透传的请求头(链路透传请求头),且链路透传请求头的值对于每条请求都各不相同。更多信息,请参见场景一:在链路中未透传引流请求头和场景二:在链路中已透传引流请求头。
严格模式与宽松模式的对比
流量泳道模式 | 优势 | 限制 | 使用场景 |
严格模式 | 对泳道中的应用程序无要求。 | 每条流量泳道中都必须包含调用链路中的所有服务。 | 适用于对整条调用链路进行灰度发布的场景。当对整条链路进行灰度发布时,严格模式对应用程序本身的要求更低。 |
宽松模式 | 要求应用程序包含一个能够在整条调用链路中传递的请求头,且链路透传请求头的值对于每条请求都各不相同。 | 只需要保证一条基线泳道包含调用链路中所有服务,其余泳道中的服务请求可以回退到基线泳道中。 | 当应用程序在调用链路中存在透传请求头的行为时,宽松模式可以实现更为灵活的泳道使用场景。例如,只发布了调用链路中的部分服务的新版本,基于这些新版本服务构建测试环境的场景。 |