2015-12-04 162 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