域内的 XMPP 服务器到服务器路由
Posted
技术标签:
【中文标题】域内的 XMPP 服务器到服务器路由【英文标题】:XMPP server-to-server routing inside a domain 【发布时间】:2015-12-07 11:40:45 【问题描述】:我正在学习即时消息系统并阅读有关 XMPP(RFC6120,6121,6122) 的信息。这些文档指的是客户端到服务器和服务器到服务器的通信(使用域名),但它们没有提到域中的服务器到服务器的路由。你能告诉我一些解决方案或文件参考这个问题吗?
ex:用户 A 想给用户 B 发送消息,用户 A 连接到 server1,用户 B 连接到与 server1 同域的另一台服务器(例如:example.com),那么 server1 如何知道哪个服务器(IP 地址) 与用户 B 有连接转发消息?
【问题讨论】:
【参考方案1】:域内的路由不是 XMPP 功能,而是依赖于服务器的功能。这就是给定 XMPP 服务器的集群层所做的。
例如,在 ejabberd 中,基本上有一个会话表(可以存储在各种后端中),它引用用户资源以及该会话和 TCP/IP 连接所在的节点。
XMPP 规范没有定义如何构建集群,因为这是一个技术实现细节。
【讨论】:
你知道解决这个问题的算法或协议吗?例如:ejabberd 如何在集群中建立和维护会话表? ejabberd 使用 Mnesia 数据库复制在集群上复制会话表。以上是关于域内的 XMPP 服务器到服务器路由的主要内容,如果未能解决你的问题,请参考以下文章