12

問候,ZooKeeper和RabbitMQ/Qpid在一起 - 矯枉過正還是很好的結合?

我正在評估多數據中心分佈式系統的某些組件。我們將使用消息隊列(通過RabbitMQ或Qpid),以便代理可以對其他代理髮出異步請求,而不必擔心尋址,路由,負載平衡或重傳。

在很多情況下,代理將與不是爲高度併發訪問而設計的組件交互,因此需要鎖定和跨代理協調以避免競爭狀況。另外,我們希望系統自動響應代理或數據中心故障。

考慮到上述使用案例,ZooKeeper似乎可能是一個很好的選擇。但我想知道是否試圖使用ZK和消息隊列是矯枉過正。這看起來像Zookeeper 可能由我自己的集羣管理器使用AMQP消息傳遞完成,但這很難得到真正的正確。另一方面,我看到一些ZooKeeper被用來實現消息隊列的例子,但我認爲RabbitMQ/Qpid更適合這一點。

有沒有人使用過這樣的組合?

由於提前,

克里斯

+0

嘿克里斯,你有沒有想過這個問題的答案?你最終做了什麼?謝謝,伊利亞 – Ilya 2011-05-28 03:59:46

+0

這些可能是你指的一些例子,爲其他用戶添加鏈接:http://www.cloudera。com/blog/2009/05/building-a-distributed-concurrent-queue-with-apache-zookeeper /和http://zookeeper-user.578899.n2.nabble.com/Task-Job-distribution-using-ZooKeeper -td6096815.html – dgorissen 2011-08-16 08:51:43

+0

我們最終與Qpid一起進行消息傳遞,並推遲實施像ZooKeeper這樣的分佈式協調服務。我仍然是ZK的忠實粉絲,但是我們的吞吐量還不足以證明額外的複雜性。我們正在研究一些簡單的數據中心內部分佈式鎖定機制,可能由MySQL或Redis支持。在路上,我們可能會畢業到ZooKeeper。 – 2011-08-19 15:26:12

回答

4

進入這一晚,但也許它會有一定的用處。主要考慮因素應該是系統的性能特徵。 ZooKeeper的,就像你說的,是不是能夠使用分佈式隊列執行任務分發系統的更多,但ZK目前,更加優化了閱讀比對寫入(這隻進場每秒範圍OPS的1000年) 。如果吞吐量需求小於此值,那麼僅使用zk來實現您的系統會減少運行時組件的數量並使其更簡單。當然,您應該在決定之前始終運行性能測試。

分佈式協調真的很難得到正確的,所以我肯定會推薦使用飼養員爲,而不是滾動您自己。

0

不太清楚的ZooKeeper到底是的,但我猜,使用Apache的(如果它不適合您的需要孔),管理這樣的事情之前首選組件作爲您自己的分佈式同步和組服務。您當然可以聘請一個開發團隊來達到這個目的,但這並不能保證您有更好的實施。

我想,它會反正作爲一個單獨的組件實施,因爲其他方式可能會帶來很多複雜性和減速工作流程;所以ZooKeeper或類似的東西的偏好是顯而易見的(對我來說)。

當然,除非您處於項目工作流程的全局優化階段,否則我認爲使用RabbitMQ或者更好(我甚至會強調,AMQP的cuz實現(特別是商業版本)會是比你想出的所有東西更可靠)。

所以我會去兩個,因爲它是需要仔細艇員選拔合適的第三方產品,但使用盡可能多的人。這只是我的看法;感謝閱讀:)

相關問題