2012-01-03 27 views
3

我開始開發分佈式應用程序,我們有一個很大的困境!我們需要一個通信庫易於使用,並具有以下特點:爲分佈式應用程序選擇通信庫

  • 可靠的通信
  • 組/渠道
  • 單播
  • 組播
  • 自動發現
  • 安全
  • 支持通過多種編程語言支持
  • 支持多種操作erating系統
  • 支持地理分佈是一個加號

這個應用

這種分佈式項目背後的主要想法是有一個前端,後端(處理應用程序)和上百家代理商的幾句話它將從一些數據中心收集數據。代理和後端之間的通信應該儘可能簡單,我們應該有可能推動配置或從代理中提取實時數據。代理和後端之間傳輸的最低安全性是必需的。另外,我們應該有可能在後端羣集中實時添加/刪除新節點。如果後端羣集的節點數量發生變化,代理應該重新分配它們的負載(可能這應該由後端通過過濾來完成)。通常,消息(代理和後端之間)不會超過1500字節,但我們有時會發送大數據包(必須進行好的分段管理)。

我們發現到現在爲止:

  • 的JGroups
  • 傳播
  • openpgm
  • zeromq
  • Hazelcast

如果您在開發集羣應用經驗,請讓我知道上面的框架是哪一個適合我的項目?此外,如果您知道其他免費的圖書館適合我的項目,並沒有列出上面請讓我知道!

+0

欲瞭解更多詳情,請參閱我的博客文章http://www.randombugs.com/cluster/choosing-communication-library-distributed-application.html,但請在這裏評論stackoverflow。 – Sacx 2012-01-03 13:48:07

+0

看看Akka http://akka.io/,它有你正在尋找的大部分功能。 – 2012-01-08 05:40:39

+0

Akka沒有C++綁定。 – Sacx 2012-01-09 11:39:45

回答

2

我強烈推薦ZeroMQ。還可以看看Linux-HA中的羣集消息傳遞層Heartbeat。http://linux-ha.org/wiki/Heartbeat

+0

你對zmq有什麼經驗嗎?請解釋爲什麼你「強烈推薦」。 – Sacx 2012-01-12 07:36:10

+0

我評估了我們正在構建的集羣應用程序,它看起來非常有前途:易於使用,性能卓越......最後,我們採用了一種使用PostgreSQL數據庫發佈消息的黑客解決方案,主要是因爲我們已經知道pg可以被信任,並且可以消除複雜性(它已經被用於數據存儲,不需要點對點通信)。使用sql數據庫進行消息傳遞只是感覺不對,我希望我們已經使用了zmq。 – Joni 2012-01-12 08:09:16

+0

是不是我所期望的,但直到現在纔是最好的答案。 – Sacx 2012-01-12 14:35:34

-1

我在這方面沒有直接經驗,所以請原諒我,如果我的建議有點愚蠢。

我遇到了一個免費的圖書館,它似乎對您有用,它是由Google製作的,名爲Protocol Buffers。它專門設計用於語言中立,平臺無關的環境和通信協議的製作。

也有很多third party RPC implementations使用協議緩衝區格式。

我希望這是有幫助的。

+0

當你想編寫自己的網絡協議時,協議緩衝區很棒,但在這種情況下不是。我想要一個免費的圖書館不要寫我自己的協議:)。感謝您的建議。 – Sacx 2012-01-06 08:01:07

1

post是我所見過的最新的綜合評價。另外檢查出hurricane

+0

對於消息隊列非常全面,但我需要一個具有C++/Java/Python支持的通信庫。直到現在只有0mq知道即使不是真正的「Message Queue」。 – Sacx 2012-01-12 14:34:48