2016-07-26 80 views
1

我是初級後端開發人員,現在我正在開發一個關於銀行的項目,這是一個分佈式系統。我之前所知道的是,有一些消息庫如ZeroMQ來實現分佈式系統中組件之間的通信。但是現在,在這個項目中,他們使用了oracle排隊。
ZeroMQ與Oracle排隊

我的同事告訴我這樣做比較好,因爲即使流程意外死亡,我們也沒有任何風險丟失發送的消息。

我的問題
Q1:如果甲骨文排隊比較好,當我們要使用的東西,像ZeroMQ

Q2: Oracle排隊的缺點是什麼,與ZeroMQ相比?

+0

主要的一點可能是您已經將Oracle用作數據庫,因此您也可以將它用於排隊。這就像一個免費的功能... – dcieslak

+0

甲骨文的AQ缺點是明確的 - 性能(和價格)。有時候你也可能會遇到一些錯誤。對於其餘功能AQ擊敗其他(免費)消息系統,事務支持,XA支持,在線備份支持,HA羣集支持...... – ibre5041

+1

ZeroMQ是**不是排隊機制**。它是一種**傳輸**機制,爲了執行某些事情而進行排隊,例如綁定後的對等發現等。您可以保留由ZeroMQ排隊的數據,但它不會開箱即用。 ZMQ的另一個優勢是市場上沒有什麼比這更快的了,如果你是一個開發人員處理分佈式系統的話,還有其他的好處。 ZMQ不會丟失消息。你的朋友對ZMQ做出了錯誤的假設,並沒有做他的功課。這就是爲什麼我們在聽我們的同行開發人員的隨機雜音之前閱讀手冊。 – Mjh

回答

-1

你的同事就在這裏,因爲Oracle AQ帶有持久性,而zeroMQ是內存中的。如果您需要每秒最大消息(百萬),則可以使用zeroMQ。價格不是問題,因爲Oracle不會爲AQ收取額外費用,Oracle XE甚至免費。

如果您的應用程序已經依賴於Oracle,將消息傳遞到Oracle中沒有任何缺點。

+2

有很多例子說明如何使ZMQ消息持久化(Malamute broker,泰坦尼克服務協議)。斷然否認「朋友」是正確的,並轉移討論。 – Mjh

+0

我找不到如何實現持久性ZMQ的任何示例。 ZMQ只能通過ZMQ完成的事實突出表明,ZMQ不適用於這項工作,因爲它只涵蓋了傳輸和*而非*持續排隊。 OP明確表示他們選擇AQ來保證可靠性。 –

+0

我不想強調ZMQ是正確的工具。我在辯論OP的朋友說ZMQ不可靠的部分 - 這完全是錯誤的。它是一個使用多種通信協議的傳輸層 - 其中一個是TCP,用於通過不可靠的線路進行可靠通信。至於如何讓ZMQ持久化 - 我不會質疑你如何找不到這些例子,但這裏是[很多例子,有解釋和代碼示例](http://zguide.zeromq.org/php:chapter4 )。 – Mjh