2013-03-15 25 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出來。