消息总线通过ZeroMQ

rem*_*ezx 12 architecture ipc dbus zeromq amazon-web-services

我将在ZeroMQ上实现分布式消息总线,并且我试图使其尽可能高效.我的要求是:

  • 多个进程连接到总线,其中一些在同一台机器上,有些则不在.
  • 进程可以订阅某些主题
  • 不幸的是,没有多播(在生产环境中不支持 - 亚马逊)
  • 我需要多语言的灵魂(至少对于C++,Haskell和Python)

我正在考虑的方法是:

1.目录服务+网状拓扑

  • 有一个目录服务,其中包含所有已连接进程及其地址的列表.
  • 每个进程在启动时连接到DS并询问其他进程的地址
  • 每个进程都有一个Pub和Sub套接字连接到所有其他进程(网状拓扑)

经纪人

  • 所有进程都连接到使用Pub套接字分发消息的代理.

有没有其他/更好的架构可以与ZeroMQ一起使用来创建这样的消息总线?

mgu*_*arr 3

我建议你看看nanomsg,它有一个内置的总线拓扑和一些其他有趣的拓扑,比如调查。它是 zmq 原作者 Martin Sustrik 的一个库。

您可以在 Martin Sustrik 博客上找到一些关于 BUS 的讨论:http://250bpm.com/blog:17