无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

即时通讯im服务器架构设计(图文详情)

前沿技术 dancy 1年前 (2023-12-05) 216次浏览 已收录 0个评论 扫描二维码
即时通讯im服务器架构设计(图文详情)

即时通讯im服务器架构设计

简单架构

  最初的IM聊天服务器可能像下图所示:

即时通讯im服务器架构设计(图文详情)

由于仅有一台im服务器,一台mysql,一旦任何一个服务出现故障,不得不对外停止服务.因此参考官方文档,做了ejabberd集群调研.

内部模块

ejabberd是一个高度模块化的服务器,它允许你按照自己实际需求,自由组合模块来实现功能,内部常见模块如下图所示:

即时通讯im服务器架构设计(图文详情)

集群目的

ejabberd集群的目的是为了容错和可伸缩性,能够为单个或一小组大型域使用多个服务器。

几点建议:

  • 如果您想独立运行两个大型域,则不一定需要群集。您可能只想运行两个不同的独立服务器。
  • 但是,要构建可靠的服务并支持庞大的用户群,群集是必须具备的功能。
  • 另外,如果只做推送服务的化,建议不要用集群,详见ejabberd推送优化.

集群工作

ejabberd集群和erlang服务器集群类似,XMPP域由一个或多个ejabberd节点提供服务。这些节点可以在通过网络连接的不同机器上运行。它们都必须能够连接到所有其他节点的端口4369,并且必须具有相同的魔术cookie(请参阅Erlang / OTP文档,换句话说~ejabberd/.erlang.cookie,所有节点上的文件必须相同)。因为所有节点交换关于连接用户,s2s连接,注册服务等的信息……

点击展开
喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

表情 贴图 加粗 删除线 居中 斜体 签到