IM系统分析

前言

为什么要做一个IM?这个想法是从一个聊天项目开始,公司原来的聊天项目已破败不堪,继续优化不如重构。经过一番了解,决定构建一个即时通讯,并在此基础上扩展聊天功能。

目前网络上的IM案例数不胜数,参考网络中众多的案例并结合自身业务需要,来构建属于自己的IM系统。

场景

  1. 社交
  2. 在线客服
  3. 待办提醒、工作提醒等
  4. 抽奖
  5. 红包

举个例子:

我们年会有红包抽奖活动,有999红包10个 ,888红包20个,88红包50个,8红包1000个,我们需要实时看到每种红包剩余数量。

目标

整体目标

整体项目构建目标:

  1. 即时通讯系统(IM)。
  2. 聊天系统(IM-Chat
  3. 后端管理平台
  4. 应用管理平台

技术目标

  1. 小型化
  2. 单节点万人同时在线
  3. 可水平扩展
  4. 多通讯协议
  5. 第三方登录
  6. 服务监控

在移动端,长连接是未来趋势,并且比Http请求的数据量更小(像WebSocket,连接只需要一个 headers)。

阶段性目标

一阶段

  1. 小型化
  2. 单节点万人同时在线
  3. 可水平扩展
  4. 通讯协议:WS
  5. 接入端:HTML5

二阶段

  1. 第三方登录
  2. 服务监控

三阶段

  1. 通讯协议:TCP/HTTPS
  2. Android/IOS

四阶段

  1. 界面美化

难点目标

  1. Android/IOS离线推送
  2. 多节点时服务治理

关键字

后台管理系统:指的是IM全局管理系统,包括租户管理、租户的应用管理等。

应用管理系统:指的是IM租户管理当前租户应用的系统。

应用:指的是租户创建的IM应用,IM允许跨应用之间的通信,IM-Chat则不允许跨应用添加好友。

系统功能

参考

基于Websocket的IM即时通讯技术

软件体系结构分析方法

本文地址: https://github.com/maxzhao-it/blog/post/eb63d0bf/