IM即时通讯-2-如何做技术方案设计

1. 引出主题

IM整体涉及的内容比较多,  做技术方案设计需要慎重, 可以先从功能列表以及核心case逐步的总结出技术方案

本文Agenda: 

1. 查看功能列表

2. 核心case分析

3. 总结技术方案设计

适合阅读的对象: 

1. 想要入门IM

2. 想要了解IM的方案设计是如何得出的


2. 如何做技术方案设计

1. 查看功能列表

功能清单

一级分类

二级分类

三级分类

核心信息

用户管理

用户管理

注册

用户名+邮箱+密码

登录

普通登录

用户名+密码

邮箱+密码

忘记密码

好友管理

添加好友

陌生人搜索

邮箱/联系人ID

二维码

添加好友列表

手机联系人

最近添加的联系人

好友列表

用户Profile

个人Profile

好友Profile

陌生人Profile

好友查询

好友删除

IM

会话模块

最近会话

最近会话列表

单聊+群聊+公众号 按照时间排序

发起会话

删除会话

会话置顶/取消置顶

会话未读数

会话查询

单聊

创建单聊

单聊编辑

发起群聊

消息免打扰

查找聊天记录

清空聊天记录

举报/投诉

群聊

创建群聊

群编辑

成员编辑

群聊名称

群公告

群管理

查找聊天记录

群置顶

保存到通讯录

公众号

消息模块

消息类型

文本消息

语音消息

视频消息

文本翻译

机器人消息

系统消息

消息推送

推送消息展示

消息管理

消息搜索

消息搜索

单条消息操作

消息发送

消息删除

消息撤回

消息复制

消息转发

观测

系统可观测

业务漏斗

监控报警

问题排查

行为链路监测

从上图中, 我们可以总结出, 这个产品整体是包含了三部分的内容

1.  用户管理(包含登录App的用户个人+用户好友)

2.  IM(会话+消息)

3. 系统可观测

2. 关键Case分析

问题的关键是要解决关键的问题

用户管理是一个比较老生常谈的话题, 可以先忽略. 可观测是技术内部的事情. 核心的是IM中的case. IM中比较重要的是消息的发送, 消息的接收, 以及会话的变更.

1. 消息的发送

分为几个步骤:

由于消息存在发送失败的可能, 站在用户的视角, 消息发送失败后, 是要能够重新发送的.

因而消息的发送, 分为以下几个步骤:

以普通的文本为例:

1. 用户输入信息

2. 消息本地入库, 设置为发送中.

3. 消息上屏.

4. 消息接口发送.

5. 消息发送状态变化.

如果是视频类等需要本地预处理的消息:

1. 用户选择文件

2. 消息本地入库, 设置为发送中

3. 消息上屏

4. 消息中的文件预处理(文件压缩 + 文件上传)

5. 本地消息更新

6. 消息发送

7. 消息发送状态变化

消息发送的图示如下

5774eaee048141f08b04f98f318ceb27.png

消息重发的图示如下

873c5892bbec43fabcdf223164d58433.png 

2. 消息的接收

消息的接收分为如下几个大的步骤

1. 客户端收到消息(主动拉取/被动接收)

2. 客户端检查消息的有效性

3. 消息入db库+进入到内存

4. 消息上屏

1c2246e9aec6428a81235402aeef32ce.png

3. 会话的变更

会话变更的种类比较多, 如新创建了会话, 会话的属性更新(lastMsg, 未读数提醒类型), 会话删除等.

我们以新创建会话 和 会话的属性变更两个为例.

打开会话

b82f8de22d3244c9b1dd16965a9f5610.png

会话属性变更

以会话提醒类型更改为例

e4fe9170d992453faf62faa42f194aad.png

4. 从核心case得出的IM的架构设计总结

fb1cd3da93064f27b8095ada0cc608c6.png

猜你喜欢

转载自blog.csdn.net/IEYUDEYINJI/article/details/128722738