1、引言
分布式IM即时通讯系统本质上就是对线上聊天和用户的管理。
针对聊天本身来说,最核心的需求就是:发送文字、图片、文件、语音、视频、消息缓存、消息存储、消息未读、已读、撤回,离线消息、历史消息、单聊、群聊,多端同步,以及其他一些需求。
对用户管理来说,存在的需求包含:添加好友、查看好友列表、删除好友、查看好友信息、创建群聊、加入群聊、查看群成员信息、退出群聊、修改群昵称、拉人进群、踢人出群、解散群聊、填写群公告、修改群备注以及其他用户相关的需求等。
2、方案目标
在进行技术选型与总体架构设计之前,需要明确一个事项,就是系统无论采用哪种方案,采用哪种架构设计都需要明确这种方案的业务目标、技术目标和架构目标,并在研发过程中不断评估系统的总体性能表现,发现系统瓶颈并不断进行优化。
总体上,我们搭建和开发的分布式IM即时通讯系统,需要满足如下方案目标。
具体是:
- 1)业务目标:满足需求设计篇章中的各类需求场景;
- 2)技术目标:支持无限扩容,百万用户同时在线聊天;
- 3)架构目标:高并发、高性能、高可用、可监控、可预警、可伸缩,支持无限扩展。
3、技术选型
在技术选型上,除了采用SpringBoot等基础框架外,也会采用容器化方案。
为了尽量降低技术门槛,在整个分布式IM即时通讯系统的技术选型中,主要采用市面上比较流行的技术框架和方案。
具体选型如下所示:
- 1)开发框架:SpringBoot、SpringCloud、SpringCloud Alibaba、Dubbo;
- 2)缓存:Redis分布式缓存+Guava本地缓存;
- 3)数据库:MySQL、TiDB、HBase;
- 4)流量网关:OpenResty+Lua;
- 5)业务网关:SpringCloud Gateway + Sentinel;
- 6)持久层框架:MyBatis、Mybatis-Plus;
- 7)服务配置、服务注册与发现:Nacos;
- 8)消息中间件:RocketMQ;
- 9)网络通信:Netty;
- 10)文件存储:Minio;
- 11)日志可视化治理:ELK;
- 12)容器化管理:Swarm、Portainer;
- 13)监控:Prometheus、Grafana;
- 14)</


2543

被折叠的 条评论
为什么被折叠?



