灰度发布
背景
由于公司产品更新迭代快,每完成一部分新功能都要能及时上线给客户使用,但是上线过程中难免会出现一些问题,前期客户量不多的情况下影响不大,但到今年开始客户量剧增,只要服务一出现问题就会有各种投诉电话打到公司,于是从今年四月份开始准备调整服务发布流程为灰度发布,中间做了很多方案调整,一直到 7 月底才完成所有调整,特此简单记录下。
原有技术架构
公司服务采用前后端分离,后端使用 Java,前端使用 nodeJs,后端为 SpringBoot 微服务架构,不同功能模块相互分离,服务发现与注册使用 zookeeper,消息队列使用 Rabbitmq,服务间调用使用 RPC 协议,缓存使用 Redis,数据库采用的是 MySQL,所有服务都是部署在阿里云上,原有拓扑图如下:
客户端访问应用服务会先通过负载均衡,负载均衡将流量进行分配到各应用服务器,各应用服务器进行业务处理再将结果返回给客户端。
灰度发布调整
在进行灰度发布调整前,和开发进行讨论了多次,最后确认了方案如下: