常用的发布类型
滚动发布
- 原理:假设A服务的v1版本部署了10个节点,轮询将这10个节点升级到v2版本
- 优点: 易实现且节约资源
- 缺陷:在发布期间,用户的请求可能会路由到v2版本处理,也可能会路由到v1版本处理;当版本涉及数据库等、接口字段类型等变更时将会造成客户端不可预知的错误 且回滚困难
蓝绿发布
- 原理: 假设A服务的V1版本部署了10个节点,需要发布v2版本时,先将v2版本也不熟10个节点,然后再统一将v1版本的所有流量路由到v2版本。蓝色发布很多时候配合流量比例使用
- 优点: 易实现,而且可以快速切换、回滚。提高发版速度
- 缺陷: 需要两倍的资源
按流量比例发布
原理:比如基于hash、会话、随机等策略使70%的流量到达v1版本,30%的流量到达v2版本 缺陷:
灰度发布(又名金丝雀发布)
- 原理: 通过流量随机百分比、header头、URI参数等用户属性的方式将流量平滑的在A/B版本上过渡,可以进行A/B 测试,让一部分用户使用灰度版本并逐渐放大流量
微服务全链路灰度发布系统带来的挑战
原理跟灰度发布原理一致,但是要针对整条链路实现链路灰度,比如A->B->C->D的服务调用管理中,变成A->B2->C2->D关系,有灰度版本时走灰度版本,无灰度版本的应用走正常版本 这个流量转发过程变得非常复杂