【问题标题】:Does an XMPP service require a single point of entry?XMPP 服务是否需要单点入口?
【发布时间】:2011-04-14 14:58:15
【问题描述】:

假设我的基于 XMPP 的聊天服务具有以下服务器端架构:

我假设每个客户端(发送者为一个,接收者 1 和 2 为其他客户端)最初必须连接并绑定到 XMPP 服务器,并且客户端在客户端的整个会话期间始终绑定到该服务器。对吗?

如果正确,那么是什么决定了客户端最初连接到哪个 XMPP 服务器?这个 XMPP 集群中是否有一些单点入口服务器来决定这一点?

【问题讨论】:

    标签: xmpp


    【解决方案1】:

    是的,对于每个会话,客户端都会与一个 XMPP 服务器建立持久连接。

    假设图中的所有服务器都服务于同一个域,提供多个服务器的常用方法是为该域使用多个 DNS SRV 记录。例如,连接到“google.com”的 XMPP 客户端将解析以下服务器/端口:

    $ dig +short -t SRV _xmpp-client._tcp.google.com
    20 0 5222 talk3.l.google.com.
    20 0 5222 talk2.l.google.com.
    5 0 5222 talk.l.google.com.
    20 0 5222 talk1.l.google.com.
    20 0 5222 talk4.l.google.com.
    

    这在规范中定义: http://xmpp.org/rfcs/rfc6120.html#tcp-resolution

    【讨论】:

    • 负载平衡如何与多个 DNS SRV 记录一起工作?我的系统如何知道它需要转到下一个服务器以平衡负载?也许带有虚拟 IP 的内容交换机更适合我的目标?
    • 有一种算法可以根据tools.ietf.org/html/rfc2782 中描述的优先级选择 DNS SRV 记录,该算法将选择一个随机服务器,按优先级加权。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2011-03-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    相关资源
    最近更新 更多