【发布时间】:2011-11-15 00:48:50
【问题描述】:
我正在开发一个由多个模块组成的应用程序,并要求它们相互共享信息。示例:发布/订阅场景,其中模块发布一些信息(例如状态变量)并且对特定信息感兴趣的模块获取它。或者是请求/回复场景,感兴趣的模块明确询问信息并得到答复。
我一直在研究不同的消息总线实现,即 D-bus、ØMQ、RabbitMQ 和 QPID(后两者基于AMQP)。然而后来有人指出,与其尝试一些复杂而繁重的消息总线实现,不如我简单地使用多播来解决问题。
缺乏了解多播是否真的可以解决我的问题以及了解两种解决方案的优缺点的经验,我恳请专家帮助我。非常感谢。
【问题讨论】:
-
您对消息速率、大小、持久性和可靠性有什么要求?
-
@ScottA。大约有 30 个模块需要共享信息。消息率不是很高。它主要是需要与其他模块通信的状态信息,例如当状态发生变化时,或者当模块请求状态变量的值时。可靠性在发布/订阅场景中不是大问题,但在请求/回复场景中。
-
共享状态下保存了多少信息?对于 Zookeeper,用例是高读取、低写入、相当少量的数据。它不是一个消息传递系统,但它可以被滥用。
标签: multicast message-bus