Шина сообщений через ZeroMQ

Я собираюсь реализовать распределенную шину сообщения над ZeroMQ, и я стараюсь сделать ее максимально эффективной. Мои требования:

  • несколько процессов связаны с шиной, некоторые из них находятся на одной машине, а некоторые нет.
  • процессы могут подписаться на некоторые темы
  • К сожалению, нет многоадресной рассылки (она не поддерживается в производственной среде - Amazon)
  • Мне нужна многоязычная душа (по крайней мере, для С++, Haskell и Python).

Подходы, которые я рассматриваю, следующие:

1. Служба каталогов + топология сетки

  • существует одна служба каталогов, в которой есть список всех подключенных процессов и их адресов.
  • каждый процесс подключается к DS при запуске и запрашивает адреса других пользователей.
  • каждый процесс имеет Паб и Sub сокеты, связанные со всеми другими процессами (топология сетки)

2. Брокер

  • все процессы связаны с брокером, который распространяет сообщения с помощью Pub-сокета.

Существуют ли другие/более совершенные архитектуры для использования с ZeroMQ для создания такой шины сообщений?

Ответ 1

Я предлагаю вам взглянуть на nanomsg, который имеет встроенную топологию шины и некоторые другие интересные, такие как SURVEY. Это библиотека Мартина Сустрика, оригинальная zmq автор.

Вы можете найти обсуждение BUS на блоге Мартина Сустрика: http://250bpm.com/blog:17