美文网首页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 - 核心功能之分布式部署方案

    1. 概述 本文继续介绍IM系统分布式部署方案。 2. IM分布式部署方案 RabbitMQ支持跨地区分布式集群部...

  • 关于极光IM做为公司产品IM功能研究报告

    关于极光IM做为公司产品IM功能研究报告 极光IM解决方案 方案A 1.SDK提交到JMessage 2.JMes...

  • 一致性 Hash 算法

    分布式--特定场景解决方案 分布式:把一个系统拆分为多个子系统,每个子系统负责各自功能实现,独立部署,各司其职。体...

  • 转载:基于Kubernetes的持续部署方案

    转载:基于Kubernetes的持续部署方案 方案概述 本技术方案为基于Kubernetes为核心的持续部署(下文...

  • Gobelieve解析

    Gobelieve 架构 Gobelieve github地址 im 客户连接服务器 (可分布式部署,暂无负载均衡...

  • 在Docker下部署RocketMQ(一)

    方案 RocketMQ是分布式的消息队列,所以有各种高性能,高可用的部署方案。本文暂时不考虑高性能和高可用的部署方...

  • 庖丁解eureka

    分布式系统解决方案之SpringCloud之注册中心——eureka 分布式系统解决方案中少不了注册中心这个组件,...

  • 分布式任务调度

    单机方案 Quartz、spring-task、Crontab 问题: 应用服务多节点部署 水平扩展 分布式框架 ...

  • Java项目分布式架构总结

    项目分布式部署架构 架构中核心中间件说明: Spring Cloud Gateway: 前端(thymeleaf,...

  • 锁与分布式锁

    分布式 现在最流行的就是分布式概念,分布式的好处显而易见,多台服务器各自为政但相互通信,部署不同功能的代码,功能互...

网友评论

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

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