2011-09-15 21 views
2

我正計劃在我的Web應用程序中使用消息傳遞中間件。現在我正在測試不同的消息中間件軟件,如RabbitMQ,JMS,HornetQ等。 提供此軟件的示例正在運行,但未提供期望的結果。
所以,我想知道哪些是負責提高應該保持眼睛的性能的因素?
開發人員應該關注哪些方面來提高中間件消息傳遞軟件的性能?影響中間件消息傳遞軟件性能低下的因素

回答

1

我是HornetQ的項目主管,但我會嘗試給你一個通用的答案,可以應用於你選擇的任何消息系統。

我看到的一個常見問題是人們問爲什麼單個生產者/單個消費者不會給你預期的性能。

當你發送一條消息,並要求確認馬上,你需要等待:

  • 來自客戶端的消息傳送到服務器
  • 磁盤
  • 服務器上所堅持的消息通過向客戶端發送回叫來確認收到該消息

同樣,當您收到消息時,您向服務器確認:

  • 的ACK是從客戶端發送到服務器
  • 的ACK是堅持
  • 服務器返回一個回調說回調達到

如果您需要確認您的所有信息 - 發送和消息 - 你需要等待這些步驟,因爲你有一個硬件涉及持久化磁盤和在網絡上發送比特。

消息系統將嘗試擴大與許多生產者和許多消費者。也就是說,如果很多人都在製作,他們應該全部使用共享給所有消費者的服務器上可用的資源。

有辦法加快單個生產者或單次消費:

  • 一種是通過使用事務。因此,您可以最大限度地減少在磁盤上執行的數據塊和同步,同時在服務器上持續存在並在網絡上往返。 (這在任何數據庫上都是一樣的)

  • 另一個是通過使用回調而不是阻止在消費者。 (JMS 2提出了一個類似於HornetQ上的ConfirmationHandler的回調)。

另外:我知道大多數供應商將不得不與要求,並建議該特定產品對他們的文檔性能部分。你應該看看每個產品

+0

你能接受答案或討論你爲什麼沒有? 如果您不接受答案,請爲我們提供一些信息,以便我們能夠幫助您。 –