2009-07-21 68 views
3

我正在構建一個web應用程序,從第一天開始,它將限制單個服務器可以處理的範圍。所以我正在考慮採用具有幾個相同節點的分佈式體系結構。目標是提供可擴展性(增加服務器以容納更多用戶)和容錯。節點之間需要共享的一些狀態,因此它們之間需要一些通信。我相信我有以下替代方案來實現Java中的這種通信:我應該在什麼級別上實現分佈式系統上節點之間的通信?

  • 使用套接字和自定義協議實現它。
  • 使用RMI
  • 使用web服務(每個節點都可以發送和接收/解析HTTP請求)。
  • 使用JMS
  • 使用像Terracottahazelcast

其他高級框架,我想知道這個技術如何互相比較:

  • 當節點數量增加
  • 當節點之間的通信量增加時(每秒1000個消息和/或消息高達100KB等)
  • 在實踐層面(如易於實現,現有的文件,許可證問題等)
  • 我也有興趣知道技術是使用了實時生產項目(而不是實驗性或理論的)人。

回答

1

別忘了Jini

它爲您提供自動服務發現,服務租賃和可下載代理,以便實際的客戶端/服務器通信協議由您決定,而不是由框架強制執行(例如,您可以選擇HTTP/RMI /無論)。

該框架圍繞確認8 Fallacies of Distributed Computingrecovery-oriented computing而建立。即您有網絡問題,並且該體系結構旨在幫助您恢復和維護服務。

如果還使用Javaspaces很容易實現工作流程和消費者 - 生產者架構。生產者將寫入這些JavaBeans中,一個或多個消費者將從該空間(在一個事務處理中)處理該工作並使用它。所以你只需提供更多的消費者就可以擴展它。

相關問題