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

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 - 核心功能之分布式部署方案)