美文网首页Project - IM
IM - 核心功能之分布式部署方案

IM - 核心功能之分布式部署方案

作者: 红薯爱帅 | 来源:发表于2021-10-07 16:43 被阅读0次

    1. 概述

    本文继续介绍IM系统分布式部署方案。

    2. IM分布式部署方案

    RabbitMQ支持跨地区分布式集群部署,其采用的通信协议AMQP支持TLS证书,保证了数据安全,参考分布式部署文档

    但是,如果Region之间带宽受限时,RabbitMQ集群可能会引起各种不可控问题,例如脑裂、跨Region消息收发延迟等问题。(RabbitMQ集群对带宽的依赖程度,尚未明确,需要测试)

    因此,引入Broker,解决跨Region消息收发问题。

    如下图,Broker可以认为是区域IM系统的边界网关,负责IM消息的跨Region路由,因此,需要记录IM系统的在线用户路由表,即IM Online UserBroker的对应关系

    Broker在线用户路由表

    • 维护当前Region的在线用户列表。通过RabbitMQ,接收来自当前区域SM的用户上线/下线通知,且通知Router服务,Router服务再转发给其他Broker
    • 维护其他Region的在线用户列表。通过接收Router的用户上线/下线通知,维护其他Region的在线用户列表,以及在线用户的GroupId列表(可由Router查库并广播给Broker)
    • 每次启动,通过Router获取到当前系统完整的在线用户路由表

    Broker服务发现

    • 每次启动,通过Router获取当前IM系统的Broker地址列表,并注册自己到Router
    • 每次退出,需要在Router完成注销,或者通过心跳保证最终注销
    • 提供API,供Router回调,以通知其他Broker的上线或下线

    Broker消息收发

    • 收到packageType=receive数据包,则根据本地在线用户路由表,获取receiver所在region
    • 如果没有找到region,或者为当前所在region,则drop
    • 如果找到region,则通过grpc stream通道,转发给对应的broker
    im-distribute.png

    备注:每个Region会部署Broker、RabbitMQ、Recorder、Auditor,以及若干SM服务。

    3. 小结

    下文将介绍IM常见问题与术语,完成系统架构设计。

    相关文章

      网友评论

        本文标题:IM - 核心功能之分布式部署方案

        本文链接:https://www.haomeiwen.com/subject/fsqtwltx.html