Canary Deployment - 灰度发布

灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。 灰度期:灰度发布开始到结束期间的这一段时间,称为灰度期。

传统的方式要实现灰度发布,需要涉及非常多的工作,如要对RPC SDK的改造,基于特定规则进行流量分配等等。在RSocket的架构中,通过RSocket Broker的介入,我们只需要在中心的Broker添加一个Filter,然后基于服务注册的元信息就可以完成灰度发布,而这一切对其他应用来说完全是透明的,不涉及任何改造,完全由中心的Broker完成就可以啦。

Canary Diagram

具体的实现原理也比较简单。在Broker的设计中,通常都会包含一个路由表,路由表中保存着服务名称和RSocket连接之间的映射关系,我们可以只需调整路由表就可以实现上述功能:

  • 设置权重: 只需调整映射池中RSocket连接实例出现的次数,就可以达到调整权重的目的
  • 服务实例暂停:只需要将服务实例对应的RSocket连接从池中去除就可以
  • 服务定点支持:如果你想将服务路由到指定的服务实例上,只需要通过filter调整一下路由表中的endpoint(接入点),指定服务方的IP或者ID就可以。