6.2.3落地
6.2.3.1MSE 全链路灰度场景
我们与来电科技的架构师深入了解后,对用户的灰度场景进行了进一步的抽象与总结,只有深 入到业务中去才能更加了解客户的需求。我们总结出如下三个场景:
场景一:对经过机器的流量进行自动染色,实现全链路灰度
•进入带tag的节点后续调用优先选择带有相同tag的节点,即对经过tag节点的流量进行 "染色"。
•有tag的调用链路上找不到相同 tag 的节点,则fallback到无tag的节点。
•有tag的调用链路经过无 tag 的节点,如果链路后续调用有tag的节点,则恢复 tag调用的模式。
图:场景一
场景二:通过给流量带上特定的 header 实现全链路灰度
•客户端通过在请求中增加制定环境的标识,接入层根基表示进行转发至表示对应环境的网关,对应环境的网关通过隔离插件调用标识对应的项目隔离环境,请求在业务项目隔离环境中闭环。
图:场景二
场景三:通过自定义路由规则来进行全链路灰度
•通过在灰度请求中增加指定的header,且整条调用链路会将该header透传下去,只需在对 应的应用配置该header相关的路由规则,带指定header的灰度请求进入灰度机器,即可按需实现全链路流量灰度。
图:场景三
我们考虑到场景一其实就能完美满足来电科技全链路灰度的场景,同时它也是绝大部分云上客 户的诉求,场景二和三可以作为更加高阶的玩法。
由于对经过应用的流量打标染色并进行全链路灰度,所以我们支持了任意的流量入口,也支持 Ingress、自建网关的灰度,在支持应用级别的灰度的同时兼容自定义的路由,更加灵活的方式 满足了来电科技全链路灰度的场景。
《企业级云原生白皮书项目实战》——第六章 云原生最佳实践——6.2 全面容器化之后,来电科技如何实现微服务治——6.2.3落地(下): https://developer.aliyun.com/article/1227857?groupCode=supportservice