RabbitMQ / ActiveMQ或Redis用于超过250,000条/秒的消息传递?

23
虽然Redis和消息队列软件通常用于不同的目的,但我想询问使用Redis处理以下用例的利弊:
  • 事件收集器组将传入的消息写入键/值对,使用者获取和删除已处理的键。
  • 负载从每秒100k条消息开始,在短时间内超过250k,目标是实现每秒百万条消息。
  • 持久性不是必须的。在出现故障时丢失非日志记录的消息是可以接受的。
  • 性能非常重要(因此需要处理负载所需的系统数量)。
  • 消息无需按到达的顺序进行处理。
您是否了解Redis被选择而不是传统的消息队列软件的这种情况?或者您是否考虑其他选项?
注:我也看到了这篇文章,但并没有帮助: Real-time application newbie - Node.JS + Redis or RabbitMQ -> client/server how? 谢谢。
1个回答

19
鉴于您的要求,我建议尝试使用Redis。相较于其他解决方案,它的性能更佳,并且可以更细粒度地控制持久性特征。根据您所使用的编程语言,您可以使用一个分片的Redis集群(您需要支持一致性哈希算法的Redis绑定——并非所有绑定都支持)。这将使您能够扩展到所需的数据量。在我的笔记本电脑上,在一些基础测试中可以达到每秒10k个操作。
如果您需要队列语义,您可能需要使用Redis中的列表操作(LPUSH进行写入,BRPOP进行读取)。
我曾经给一位客户部署过Redis作为消息队列,并且他们对其非常满意。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接