我必须开发一个消息总线,用于进程发送,接收彼此的消息。目前,我们正在Linux上运行,以便稍后移植到其他平台。
为此,我使用ZeroMQ over TCP。模式是带有转发器的PUB-SUB。我的总线作为一个单独的进程运行,所有客户端连接到SUB端口以接收消息,PUB发送消息。每个进程都通过唯一标记订阅消息。来自进程的send
调用会向所有人发送消息。 receive
调用将获取该进程标记有该进程标记的消息。这很好。
现在我需要包装ZeroMQ的东西。我的客户只需要提供一个独特的标签。我需要维护一个全局的标签列表与ZeroMQ上下文和套接字的详细信息。当客户说,
initialize_comms("name");
总线需要检查此名称是否唯一,创建ZeroMQ上下文和套接字。同样,如果客户端说receive("name");
,则总线需要使用该标记获取消息。
总结我所面临的问题;
答案 0 :(得分:7)
<强>答案强>
是,ZeroMQ
能够满足此需求
是即可。 ZeroMQ
是一个正确的工具(而不是一个强大的低延迟组件工具箱)。虽然nanomsg
具有直接的总线原语,但核心分布式逻辑可以集成在ZeroMQ
框架中
是&amp;否即可。上面给出的PUB-SUB可以用于仿真&#34; shout-cast&#34; -to-bus并且建立在使用订阅密钥的SUB副作用上。必须重新思考和设计整个逻辑的静态,以便整个制造范围符合您的计划(参见下文)。另外请记住,ZeroMQ的初始版本操作PUB / SUB原语作为&#34;订阅过滤&#34;接收方传入的消息流,因此大规模的设计应检查大规模的流量/洪水风险/流程效率低......
< / LI> 是即可。 ZeroMQ
是一个经过精心调整的原始元素基础(就讨论架构,而不是其功率和性能)来构建更聪明,更强大的基础元素。几乎可线性扩展的正式通信模式。草绘架构后,不要再遇到PUB / SUB或PAIR原语。 如果有人忘记 True Powers 的来源,任何设计都会很差。
开始迈向可伸缩和放大的下一步的好地方故障恢复总线
因此,最好的下一步可能是恕我直言,以获得更多的全局视图,这对于尝试使用ZeroMQ进行编码的前几个事情听起来很复杂,但是如果你 at least jump to the page 265 [Code Connected, Volume 1] [available asPdf >>> http://hintjens.wdfiles.com/local--files/main%3Afiles/cc1pe.pdf ]中的强>,如果不是逐步阅读的话。
最快的学习曲线是首先在图60 重新发布更新和图62 HA克隆服务器对可用于高可用性方法,然后返回到根,元素和详细信息。
答案 1 :(得分:4)
如果有人感兴趣的话,这就是我最终设计的内容。感谢大家的提示和指示。
我仍在执行,因此可能会出现看不见的问题,但现在它可以正常工作。此外,可能有更优雅的方式,但我不想丢弃我建立的PUB-SUB。