2015-12-04 116 views
0

我對ZeroMQ相對較新,希望對它的內部架構提出一些建議。什麼是ZeroMQ底層設計架構

我打算使用ZeroMQ作爲我的工作的消息框架。我想要實現的基本想法是能夠根據實現特定工作流最終期限所需的負載和計算能力動態擴展基礎架構。

因此,如果有必要添加更多節點,則應用程序會生成新節點,並且消息傳遞框架也應該能夠包含更改。我還應該能夠指出附加計算應該發生的位置,或者框架如何動態地添加新節點(如果有的話)。特定節點上的事件決定了在其他節點上執行的後續操作。這裏是我的方案或我的籌碼,我正在盤算過,但想知道,如果它是有道理的:

  • 用戶應用

  • ZeroMQ消息

  • 魷魚基於內容的路由

  • 覆蓋

  • 物理基板

我對上面的堆棧有點懷疑,因爲我相信ZeroMQ有助於實現大部分功能,從而使其更簡單。

關於我的堆幾個要點:

物理基板是可用於計算或作爲數據源的節點的總數。

覆蓋是基於物理網絡動態構建的邏輯網絡,基於可用於特定工作流程的最近節點。即如果兩個節點頻繁交換數據,則這兩個節點在邏輯上彼此靠近放置。當我們使用ZeroMQ時,是否需要CHORD等單獨的覆蓋層?

魷魚基本上用於基於內容的路由。我們使用ZeroMQ時需要Squid嗎?

ZeroMQ消息傳遞用於應用程序的不同節點之間的通信。

基本上,我想知道的是,鑑於ZeroMQ具有更豐富的功能,是否可以使上面的堆棧變得更簡單。如果是這樣,有人可以指出或分享想法。然而,我正在瀏覽ZeroMQ的文檔,我發現它很難理解ZeroMQ的內在設計。請幫忙。

感謝

回答

0

有這麼多針對您的用例在這裏,這幾乎是不可能給予任何明確的答案。 ZeroMQ不是直接取代你在架構中構建的概念,但它可能會實現你試圖滿足的目標,這取決於你如何使用它們。

我的建議是將當前的體系結構擱置一邊,開始嘗試構建一個以ZMQ爲核心的新體系結構,並查看您的堆棧其他部分解決的侷限性。

至於ZMQ的「內在設計」,下面是你需要理解爲出發點的基礎知識:

  1. 一個ZMQ插座爲你處理連接的詳情,包括管理網絡打嗝 - 但這您需要知道的限制
  2. ZMQ套接字有多種類型,他們對如何使用它們有意見。其中一些是異步通信,其中一些是嚴格同步的,一些是單向的,一些是雙向的。
  3. 如果兩個插座之間的連接被切斷(例如,一個節點出現故障,出現網絡故障 - 不僅僅是暫時的打嗝),您的工作是識別並重新建立連接
  4. 有沒有建立在經紀或拓撲結構中,你必須自己設計和構建。

...最終,ZMQ提供了一個工具集,爲您打造一個消息傳遞框架,它提供完全實現的消息框架的開箱。所以,是的,它有能力取代你目前使用的其他一些工具,但你必須建立它。

+0

我還是沒有得到最初問題的答案。當你告訴ZMQ有能力替換其他一些工具時,你指的是什麼工具?您能否詳細說明ZMQ可以提供的功能,或者是否能解決我的情況所需的工具。 – SRKV

+0

你沒有提供關於你如何使用squid的細節,或者你的覆蓋功能以及你想要解決什麼問題以及如何解決。可以想象的是,你正在使用這些東西來解決ZMQ給你一個更簡單的解決方法的某些問題,但是如果你沒有深入瞭解你的堆棧中的更多細節,我不可能知道這些問題。 – Jason