《企业级云原生白皮书项目实战》——第六章 云原生最佳实践——6.2 全面容器化之后,来电科技如何实现微服务治——6.2.3落地(上): https://developer.aliyun.com/article/1227859?groupCode=supportservice
6.2.3.2来电全链路灰度落地方案
来电的业务架构如下,最上层是移动端等用户界面,自建的Nginx网关作为接入层,服务层就是各种服务,使用的是Spring Cloud与Dubbo作为服务框架。
图:来电的业务架构
图:来电科技全链路灰度落地的架构如下
在 Nginx 层配置流量分流的配置,10% 的流量进入灰度环境,90% 的流量进入未打标即线上 正式环境,然后经过灰度环境的流量会自动被 MSE 染上对应环境的颜色,从而进行全链路的 灰度路由,保证流量在灰度环境中闭环,如果没有灰度环境的机器,比如支付中心只有线上的 机器,那么流量会走线上环境,当我们数据中心又存在灰度环境的机器,那么灰度流量还会重 新回到数据中心的灰度环境中。
6.2.3.3 MSE 服务预热能力
当我们在白天高峰期做发布,通常都会导致业务流量出现损失,我们的研发人员不得不选择在晚上业务低峰期做变更,这大大降低了研发人员的幸福指数,因为他们不得不面临熬夜加班的困境。如果能在白天大流量高峰期也能进行流量无损的变更,那么这对于研发人员来说将是大大提升研发效率的事情。
来电科技也遇到类似的问题,当业务流量过大的场景下,进行应用发布,系统服务刚启动阶段,应用由于存在冷启动的过程,此时的应用容量往往会比正常情况下低,但是线上的流量是无法 区分当前的服务是否是刚启动的,依旧会有大流量持续涌入,此时就会导致系统过载而崩溃,出现流量损失。如果我们的微服务应用具备服务预热的能力,使得流量按照一定的曲线进行缓 慢增长,从而保证服务进行充分的预热,即使是在高并发大流量场景中,保护应用在安全启动。MSE提供的一种基于Agent的无侵入预热微服务应用的方法能有效让用户在不修改任何代码的情况下即可为应用提供服务预热能力。