涉及队列时发送金丝雀

时间:2017-12-13 03:39:59

标签: deployment production-environment canary-deployment

Fowler says当旧版本仍在运行时,一小部分流量会路由到Canary版本。

这假设可以在负载均衡器/路由器级别控制路由。

我们有一个用例,其中微服务消耗队列并进行一些处理。我们想知道如何控制路由以将一部分流量引导到金丝雀消费者。

我们考虑的其中一个选择是拥有一个单独的" Canary队列"但问题是制作人现在必须知道这个听起来像气味的队列。

这似乎是涉及队列的常见问题。关于如何将Canary用于此类应用的任何想法?

2 个答案:

答案 0 :(得分:0)

正如您所写,金丝雀版本的目标是通过新部署来驱动一小部分实时流量,以最大限度地减少新部署中漏洞的潜在影响。如果不控制部署中的服务的路由,则可以通过调整新版本服务与当前版本服务的百分比来调整新部署处理的流量百分比。

例如,您的队列由v1处的100个服务实例池处理。要对金丝雀测试下一个版本,请部署1到10个v2并关闭1到10个v1。这将近似路由到新服务的1到10%的流量。

如果新版本服务的预期吞吐量明显不同,请考虑调整新服务与旧服务的比率。

如果您当前的服务部署非常小,请考虑在部署新服务实例之前临时增加已部署的当前服务的总数。例如,假设您的活动部署是3个服务。在部署1个新版本服务之前部署6个以上的当前服务,可以使流量更接近10%。

答案 1 :(得分:0)

有两种方法可以对队列工作器进行金丝雀部署:

  1. 金丝雀专用队列
  2. 常见队列

这两种方法各有优缺点,在这里详细介绍:http://www.varlog.co.in/blog/canary-deployment-workers/