Heroku,RabbitMQ和许多工人。什么是最好的架构?

问题描述 投票:0回答:2

我正在寻找处理以下场景的最佳方法:

我有多个边缘设备将传感器数据发布到RabbitMq代理。代理将经历每秒约500条消息的总体工作量。然后有一个python worker dyno,它一次消耗一个传感器读数,对它应用一个过滤器(可能需要5-15ms)并将结果发布到另一个主题。

当然,一个工作人员不足以满足所有请求,因此我需要适当的扩展。我使用队列来确保每个传感器读数只消耗一次!

我的问题是:

  1. 我是否可以水平扩展并根据需要启动尽可能多的dynos来处理RabbitMQ队列中的所有请求?看似简单但更昂贵。
  2. 或者在每个dyno上运行更少的dynos但是更多的线程更好,并使用例如芹菜?
  3. 或者是否有一个负载均衡器从队列中消耗1个项目并动态调度动态?
  4. 完全不同的东西?
heroku rabbitmq
2个回答
2
投票

选项1或2是您最好的选择

我不认为选项3存在而不直接绑定到heroku API,并为自己编写大量代码......但这对你的需求来说太过分了,IMO

在1和2之间,选择取决于您是否希望增加处理更多消息的能力而无需重新部署代码。

选项1通常是我的偏好,因为我可以添加一个新的dyno实例并完成。需要10秒钟。

如果您不介意调整代码并重新部署,则选项2可能有效。它将为成本的权衡增加额外的时间和精力。

但是在某些时候,选项2无论如何都需要变成选项1,因为你只能在dyno上做很多工作。你会在dynos的线程上遇到限制。然后你会用dynos扩展。


0
投票

在GuvScale中,您可以扩展从RabbitMQ消耗按摩的工作人员

© www.soinside.com 2019 - 2024. All rights reserved.