ejabberd 集群在概念上如何工作?

ejabberd 集群在概念上如何工作?

我对 XMPP 和 ejabberd 完全是个新手。如果有专家能告诉我 ejabberd “集群” 是如何工作的,我将不胜感激。我搜索了很多,但找不到任何关于此的规格。

它是否只是通过 http 复制所有数据(因此客户端连接到哪里并不重要)?还是通过 DNS RR 完成?

答案1

它使用了 Erlang 的集群功能: - 能够向 Erlang 集群中任何节点上的任何进程发送消息 - 它还使用 mnesia(Erlang 的分布式数据库)来存储路由表,其中包含 JID <-> 客户端进程 ID 映射。

当消息进入 ejabberd 时,它会在此表中查找接收方 JID,并将其发送给找到的 PID。此进程可以位于集群中的任何位置,erlang 负责路由它。

答案2

集群似乎是在 DNS 级别(或前端 LB)上完成的,其基础是集群数据库/持久层。他们为此提供了几种实现。

相关内容