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. 消息发送状态变化

消息发送的图示如下

消息重发的图示如下

2. 消息的接收

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

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

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

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

4. 消息上屏

3. 会话的变更

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

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

打开会话

会话属性变更

以会话提醒类型更改为例

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

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

  1. 爱聊天(LoveChat)即时通讯聊天APP系统——技术架构

    爱聊天(LoveChat)即时通讯聊天APP系统--技术架构 公司旗下第三代即时通讯产品 第一代:阿卡信 https://gitee.com/openzaly/akaxin-openzaly 第二代: ...

  2. 即时通讯开发----回音消除技术

    在即时通讯应用中,需要进行双方,或是多方的实时语音交流,在要求较高的场合,通常都是采用外置音箱放音,这样必然会产生回音,即一方说话后,通过对方的音箱放音,然后又被对方的Mic采集到回传给自己(如下图所 ...

  3. IM即时通讯-6-已读回执的方案设计

    背景-为什么展示已读未读 部分即时通讯软件会选择展示给用户已读未读, 主要是***快速感知对方的阅读状态, 感觉到自己受重视, 方便做下一步操作***. 如果要带点高度的讲,满足软件所代表的关键用户的 ...

  4. 技术玩法大升级,网易MCtalk揭秘5G即时通讯技术背后的秘密

    目前短视频 .互动直播等音视频应用火爆,抖音,快手等已经成为当红流量入口,音视频技术有了长足的发展.随着社交的流行.玩法的增加,IM功能也成为众多App中必备功能之一.2019年伴随着5G.AI热度持 ...

  5. IM即时通讯-3-如何设计消息协议层方案

    1. 前言 上篇即时通讯系列-如何下手做技术方案设计 最后总结出IM系统的端侧基本结构 后续文章将从下到上以此做架构设计. 本文Agenda 什么是消息同步 同步协议的常见设计方案包含哪些 应该采用哪 ...

  6. NanShan企业即时通讯开始写博客

    原文:NanShan企业即时通讯开始写博客 这几年,我一直在写一个 即时通讯软件,软件写到一定程度,多少会有点空虚,终于下决心要开始写博客了,做程序员快六年了,六年的时间里,由一个嫩头青,成长为了一个 ...

  7. 开源OpenIM:高性能、可伸缩、易扩展的即时通讯架构

    本文属于OpenIM技术团队原创,转载请注明出处,谢谢 网上有很多关于IM的教程和技术博文,有亿级用户的IM架构,有各种浅谈原创自研IM架构,也有微信技术团队分享的技术文章,有些开发者想根据这些资料自 ...

  8. 2019年即时通讯局势为Magento用户带来的启示

    我们综合了来自全球最具创新力的公司的34种产品,营销和CX领导者,将对2019年的即时通讯业务状况做一个全面分析.这与在麦进斗等品牌电商平台上运营的商家们息息相关,通过各种社交软件施行分销传播已经是做 ...

  9. 即时通讯:IM即时通讯实现原理

    即时通讯:IM即时通讯实现原理 IM技术概念 即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种 ...

最新文章

  1. pandas使用shift函数对数数据进行向上偏移(-1)或者向下偏移(1)、索引不移动,移动之后无值的赋值为NaN、将原数据列与偏移后的数据列相加生成新的数据列
  2. ZendStudio中,缺少gbk gb2312编码的解决办法
  3. Synchronize对String加锁
  4. git / 通过 ssh 与仓库通信
  5. 1.Python算法之枚举算法
  6. Vitis学习记录(三)
  7. 通向架构师的道路(第七天)之漫谈使用ThreadLocal改进你的层次的划分
  8. Java:集合for高级循环遍历
  9. 2-6 基于SpringBoot的SpringSecurity环境快速搭建与验证
  10. 第六十期:华为:希望把VR/AR打造成下个智能手机产业
  11. 三菱a系列motion软体_通化三菱Q00JCPU
  12. 2021年游戏项目的十大编程语言:C++、Java、JavaScript、Python均在榜上
  13. 国科大学习资料--机器人学导论(张正涛)--2014年期末考试试卷(含答案)
  14. 江苏小高考计算机什么时候考,2021江苏小高考时间 什么时候考试
  15. 股票涨跌和买卖预测计算公式
  16. 什么是ColdFusion
  17. originPro2021(3)添加图例导出图片图例不完全
  18. 股票软件开发总体方案
  19. 【MCAL_CANDriver】-1.2-Can Mailbox邮箱,Hardware Object,HOH,HRH,HTH之间的关系
  20. 怎么测试t470p性能软件,ThinkPad T470p 助力耐热极限测试圆满完成

热门文章

  1. 浅谈AppStore中的评分与评论
  2. 【原创】Powermill使用点滴-不断更新
  3. Hive学习(15)-Hive分析窗口函数(三)
  4. Linux Crond服务
  5. populate() isn‘t reentrant 不可重入
  6. 盘点:大数据7个最有趣的应用
  7. JDK9新API:List.of();Map.of();Set.of();
  8. 浅析Anycast技术
  9. 通过patch-package创建补丁修改node_modules依赖下的源码
  10. 银行卡收单业务____轧差