2013-03-15 24 views
1

我正在使用6台服务器构建集群,它们都是磁盘节点。我使用rabbitmq为我们的网站收集日志文件。现在在繁忙时间,发布速率大约为每秒30k条消息。有2个主要消费者(hdfs和elasticsearch),每个消费者都需要处理所有消息,因此交付速率达到每秒60k左右。有关性能的分布式集群问题

在我的方案中,一台服务器可以保持10k的传输速率,并使用6个节点来负载平衡压力。我的解决方案是我在每个节点上创建了2个队列。每条消息都带有一个随机路由密钥(类似message.0,message.1等),以便将压力分发给每个节点。

让我困惑的是:

所有消息发送到一个节点。我应该使用HA代理来平衡这种发布压力吗?

  1. Durable Queues和Transient Queues之间是否有任何性能差异?
  2. 内存节点和磁盘节点之间是否有任何性能差异?我所知道的是内存节点和磁盘节点之间的区别仅在于元数据(如队列配置)。
  3. 如何提高发布和交付代码的性能?我研究,我知道的几种方法:
    • 禁用确认机制(?在发布代码)
    • 使HIPE(我已经做了,它帮助了很多)
  4. 例如,输入是1w mps(消息每秒),有两个消费者消耗所有消息。然后输出是2w mps。如果我的服务器可以处理1w mps,我需要两台服务器来处理2w-mps的压力。现在一个新的消费者也需要消费所有的消息。结果,输出命中3w mps,所以我需要另一个更多的服务器。为了得出结论,还有一个消费者可以使用所有消息,还有一台服务器?
+0

有你有看http://www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/和HTTP :在问题3 //www.rabbitmq.com/blog/2012/04/25/rabbitmq-performance-measurements-part-2/ – robthewolf 2013-03-16 15:31:17

+0

您的意思是进口还是你的意思是提高 – robthewolf 2013-03-16 15:31:37

+0

哦,是的,我想输入“?提高' – 2013-03-18 02:51:51

回答

0

“所有的消息发送到一个节点上。我应该使用HA代理以负载均衡此发布的压力?”

This本文概述了旨在分发RabbitMQ负载的一些设计。 “

”Durable Queues和Transient Queues之间是否存在任何性能差异?“

是的,持久队列备份到磁盘,以便它们可以在服务器重新启动时恢复,例如。这增加了名义上的开销,尽管实际进程是异步发生的。

“内存节点和磁盘节点之间是否有任何性能差异?”

不是我所知道的,但这取决于机器本身。

“如何提高发布和交付代码的性能?“

尝试this出来。