Я собираюсь реализовать распределенную шину сообщения над ZeroMQ, и я стараюсь сделать ее максимально эффективной. Мои требования:
- несколько процессов связаны с шиной, некоторые из них находятся на одной машине, а некоторые нет.
- процессы могут подписаться на некоторые темы
- К сожалению, нет многоадресной рассылки (она не поддерживается в производственной среде - Amazon)
- Мне нужна многоязычная душа (по крайней мере, для С++, Haskell и Python).
Подходы, которые я рассматриваю, следующие:
1. Служба каталогов + топология сетки
- существует одна служба каталогов, в которой есть список всех подключенных процессов и их адресов.
- каждый процесс подключается к DS при запуске и запрашивает адреса других пользователей.
- каждый процесс имеет Паб и Sub сокеты, связанные со всеми другими процессами (топология сетки)
2. Брокер
- все процессы связаны с брокером, который распространяет сообщения с помощью Pub-сокета.
Существуют ли другие/более совершенные архитектуры для использования с ZeroMQ для создания такой шины сообщений?