2013-05-19 82 views
3

我有一個基本的Java消息傳遞應用程序,它將JAVA對象發送到遠程服務器進行處理。我在線的兩側利用Spring支持,並使用ActiveMQ作爲我的JMS提供者。它運行良好 - 並且我們沒有遇到過10個併發發送消息的客戶端的實際問題。Java客戶端和Java'後端'之間的高性能消息傳遞

但是,我們現在真的想要擴展。客戶數量可能會增加到大約500人。此外,每個客戶端使用的帶寬比最初宣佈的更重要。

我想知道是否有人認爲ActiveMQ是這項工作的正確工具 - 或者基於套接字的TCP/UDP是否會幫助我們擴展更好。我們並不熟悉AMQ的一些'高級'功能,因爲我們使用基本的Spring JMS模板支持。

任何意見/想法,將不勝感激。

感謝

+1

你可能需要解釋你的情況多一點。消息頻率/消息大小在播放。您是否有持續的消息?任何HA設置(任何共享磁盤或數據庫持久存儲)?你是否打算分發多個服務器的負載? 有一些非常輕便的基於套接字的解決方案,例如http://www.zeromq.org/但是,這可能需要您重新設計一些輪子,並進行適當的設計,而不是通過擴展AMQ/JMS解決方案。在高負載的情況下,你不能只添加一臺服務器嗎? –

+0

'你能不能在高負荷情況下添加一臺服務器......首先,你需要確定瓶頸發生的位置,以便在生產者,消費者或/和經紀人級別定位到哪裏進行擴展。 – raffian

回答

3

不知道服務的品質是什麼和SLA的你想實現的,在評估任何應用程序通訊服務實現時,我遵循的基本規則如下......

性能超過可靠性

  • 快速消息
  • 間歇消息丟失可接受
  • 消息是不持久的
  • 幾乎沒有成本

在這種情況下,像ZeroMq(和其他人一樣),產品就足夠了,因爲它工作在插座的水平,是分散的,提供了非常低在大型分佈式系統中延遲和擴展性好,開源,因此成本可以忽略不計。如果某些用例需要持久性和可靠性,則準備實施傳統消息中間件提供開箱即用(持久性,持久性,複製等)的定製解決方案。

平衡性能和可靠性

  • 性能和可靠性同樣重要
  • 丟失的消息不被接受
  • 是持久性消息
  • 需要有一定的支持
  • 成本相對較低

以下是ActiveMQ,RabbitMq等產品發揮作用的地方。基於代理的中間件解決了可靠性和持久性問題,同時提供了良好的性能和可擴展性。對於中小型企業來說,支持成本通常足夠低,而不會打破銀行業務。可以肯定地說,大多數消息傳遞需求屬於這個類別,因爲它提供了對性能和可靠性的可訪問性,並且隨着應用程序的成熟,您可以根據未來的需求爲另一個犧牲另一個,而不會因爲選擇不當而丟失整個消息傳遞基礎結構幾年前。

可靠性在性能

  • 可靠性是最重要的
  • 消息不能被丟棄
  • 消息交還出來的現成
  • 集羣,HA,複製等。可立即使用。
  • 需要企業級的全球支持和專業服務
  • 成本高

金融公司,交易系統,銀行業務應用等,通常有這樣的要求,其中信息系統的可靠性有一美元價值的附加對此,當事情不奏效時,金錢就會流失。因此,消息持久性,HA /容錯性,故障切換都是非常重要的。如果成本不是問題,請查看像WebLogic,Websphere,SonicMQ或TIBCO等產品......這些產品非常昂貴,但都提供了可靠性,企業支持和負載下的良好性能。我已經使用SonicMQ,它是一款非常棒的產品,非常快速和可靠,但它需要一隻手臂和一條腿。

希望它有幫助...

+0

非常豐富的迴應。我認爲Active-MQ符合我們的要求,正如您在此處所述。謝謝。 – totalcruise

相關問題