Назад | Перейти на главную страницу

Как концептуально работает кластеризация ejabberd?

Я полный новичок в XMPP и ejabberd. Я был бы очень благодарен, если бы какой-нибудь специалист мог рассказать мне, как работает «кластеризация» ejabberd. Я много искал, но не смог найти никаких спецификаций по этому поводу.

Он просто реплицирует все свои данные через http (так что не имеет значения, куда подключается клиент)? Или это будет через DNS RR?

Он использует возможности кластеризации Erlang: - Возможность отправлять сообщения любому процессу на любом узле в кластере Erlang - он также использует mnesia, распределенную базу данных Erlang для хранения таблицы маршрутизации, которая содержит отображение идентификаторов клиентских процессов JID <->.

Когда сообщение попадает в ejabberd, оно ищет JID получателя в этой таблице и отправляет его по найденному PID. Этот процесс может быть где угодно в кластере, его маршрутизация берет на себя erlang.

Кажется, что кластеризация выполняется на уровне DNS (или внешнем интерфейсе LB), а основой является кластерный уровень базы данных / постоянства. Они предоставляют для этого несколько реализаций.