我有多个用 Node.js 编写的服务的前端和用 Ruby 编写的 worker。现在的问题是如何让这些沟通?我需要维护动态的工作人员池来处理负载(当负载增加时产生更多的工作人员)并且消息相当大~2-3M,因为我正在通过 Node.js 前端向用户上传的工作人员发送图像。因为我想要很好的扩展性,所以我考虑了一些排队解决方案,但我没有找到任何现有的解决方案(或被误解的指南)可以提供:
- 后备机制。到目前为止,我发现的解决方案只有一个故障点 - 消息代理,并且没有办法提供回退。
- 序列化。因此,当代理失败时,任务不会丢失。
- 传递重要信息的能力。
- Ruby 和 Node.js 的简易 API
- 一些用于跟踪队列大小的 API,以便我可以重新安排工作池。
- 最好是轻量级的。
也许我的方法是错误的?也许我不应该使用队列而是其他方式?或者有一些符合上述要求的排队解决方案?