使用ZeroMQ实现消息总线

 62755 发布于 2023-01-05 20:34

我必须开发一个消息总线,用于进程发送,接收彼此的消息.目前,我们正在Linux上运行,以便稍后移植到其他平台.

为此,我使用ZeroMQ over TCP.模式是带有转发器的PUB-SUB.我的总线作为一个单独的进程运行,所有客户端连接到SUB端口以接收消息,PUB发送消息.每个进程都通过唯一标记订阅消息.send来自进程的调用将消息发送给所有进程.一个receive通话将获取这一过程标有该进程的标签的消息.这工作正常.

现在我需要包装ZeroMQ的东西.我的客户只需要提供一个独特的标签.我需要维护一个全局的标签列表与ZeroMQ上下文和套接字的详细信息.当客户端说, initialize_comms("name");总线需要检查此名称是否唯一,创建ZeroMQ上下文和套接字.同样,如果客户端说receive("name");总线需要使用该标记获取消息.

总结我所面临的问题;

    无论如何使用ZeroMQ提供的设施实现这一目标?

    ZeroMQ是否是正确的工具,或者我应该寻找像nanomsg这样的东西?

    带有转发器的PUB-SUB是否适合这种模式?

    或者,我在这里错过了一些东西吗?

user3666197.. 7

答案

    是的,ZeroMQ能够满足这种需求

    是的.ZeroMQ是一个正确的工具(而不是一个强大的低延迟组件工具箱).虽然nanomsg总线具有直接原语,但核心分布式逻辑可以集成在ZeroMQ框架中

    是和否.如上给出的PUB-SUB可以用于仿真"喊叫"到总线并且建立在使用订阅密钥的SUB副作用上.必须重新思考和设计整个逻辑的静态,以便整个制造范围符合您的计划(参见下文).另外请记住,ZeroMQ的初始版本操作PUB/SUB原语作为在接收方进行的消息传入流的"订阅过滤",因此大规模设计应检查流量 - 洪水/过程风险 - 大规模的效率......

    是的.ZeroMQ对于构建更聪明,更强大和几乎线性可扩展的形式通信模式而言,它是原始元素的基础(对于架构的讨论,而不是其功能和性能).草绘架构后,不要再遇到PUB/SUB或PAIR原语.如果忘记真正的力量来自哪里,任何设计都将是穷人.

这是一个向可扩展且具有故障恢复能力的公交车迈出下一步的好地方

因此,一个最好的下一个步骤一个可以做的是恕我直言,以获得多一点全局观,这可能听起来很复杂的一个尝试与ZeroMQ到代码的第一个几件事情,但如果你至少跳转到第265页中的[代码连接,第1卷] [可用asPdf >>> http://hintjens.wdfiles.com/local--files/main%3Afiles/cc1pe.pdf],如果不是一步一步阅读的情况.

有史以来最快的学习曲线是在图60 重新发布更新和图62 HA克隆服务器对上首先获得一个未公开的视图,以获得可能的高可用性方法,然后回到根,元素和细节.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有