fowler说,在旧版本仍在运行时,将一小部分流量路由到加那利版。
这是假设可以在负载平衡器/路由器级别控制路由。
我们有一个用例,微服务会消耗队列并进行一些处理。我们想知道如何控制路由将流量的子集引导到加那利消费者。
我们考虑的选择之一是要有一个单独的"金丝雀队列",但问题是生产商现在必须意识到这个队列听起来像是一种气味。
这似乎是涉及队列的常见问题。关于如何采用金丝雀的任何想法?
正如您所写的,金丝雀发行的目标是通过新部署来驱动一小部分的实时流量,以最大程度地减少缺陷在新部署中的潜在影响。当您不控制部署下的服务路由时,您可以通过调整新版本服务的百分比为当前版本服务来调整新部署处理的流量百分比。
例如,您的队列正在通过V1的100个服务实例的池处理。要测试下一个版本,请部署V2的1至10,然后关闭V1的1至10。这将大约将到新服务的流量的1%到10%的路由。
如果新版本的服务的预期吞吐量显着不同,请考虑调整新服务与旧服务的比率。
如果您当前的服务部署非常小,请考虑在部署新服务实例之前暂时增加部署的当前服务总数。例如,假设您的主动部署是3个服务。在部署新版本的1个服务之前,请您将目前的6个部署6个服务,将使您可以将流量保持在金丝雀近10%。
有2种排队部署的方法:
- 专用的金丝雀队
- 一个普通队列
这两种方法都有其利弊,在此处详细介绍:http://www.varlog.co.in/blog/canary-deployment-workers/