Ejabberd 将应用程序逻辑与后端耦合

Ejabberd couples application logic with backends

我们正在构建一个 XMPP 应用程序,我们选择了 ejabberd 作为我们的服务器。 我们在协议级别做了很多更改以匹配我们的用例。 然而,我们对 ejabberd 将应用程序逻辑与其 mnesia 后端耦合的方式不满意。我们希望将所有 mnesia 表(保持会话的表除外)移动到其他节点,以便解耦我们的系统以便于维护和调试,并避免与 ejabberd 控制逻辑的资源竞争。我们知道如果是这种情况,将会受到延迟的影响。我们的问题是,这种方法是否是更好的设计?我们会在分销方面面临更多问题吗?或者还有什么? 请给出您选择的详细原因。

实际上,存储数据的模块是围绕后端的概念设计的。他们对 Mnesia 并不紧张。您可以检查现有代码中每个模块后端的 API。您会看到通常有模块可用于存储在关系数据库、Riak、Redis 等中。

您可以使用完全相同的 API 来实现您自己的自定义后端。