No.179# IM即时通信知识点梳理

引言
客服答疑、私信、群聊、直播等全部或者部分场景往往公司必须的。
本文主要走查下IM即时通信的逻辑架构以及常用的消息处理策略。
本文主要内容有:
逻辑架构分层 通信基本场景 消息处理策略
1、逻辑架构图示
2、逻辑分层说明
负载均衡:提供四层/七层负载均衡 网关长连:提供长连接网关、该层也包含第三方厂商消息推送通道 路由分发:根据分发到不同的业务场景中的转发服务,避免和长连接耦合 业务逻辑:处理与即时通信相关的业务,单聊、群聊、打赏等 内网网关:负责各个域特殊场景对接和交互
3、消息推送通道
消息通过长连实现消息通信和推送 长连接的心跳维护和保活 当APP退出长连接关闭时可选择第三方辅助通道推送 第三方厂商通道有:苹果手机APNs(Apple Push Notification service)服务、安卓手机GCM(Google Cloud Messaging)服务、厂商公共推送服务。
4、消息发送流程
- userA发送一条消息到userB
- userA发送一条消息
- 消息通过IM系统存储
- IM系统推送该消息到userB
通信基本场景有:消息内容、消息索引、最近联系人、未读消息等。
未读还可以分为:会话未读以及总未读,需要各自单独维护。
另外架构也与场景关联,如果一个群聊允许5000人和一个只有3个人的群聊会有极大差异。
1、消息内容
消息内容ID 消息内容 消息类型 生产时间
2、消息索引
用户ID 关联用户ID 收发消息类型 消息内容ID
3、最近联系人
用户ID 关联用户ID 消息内容ID
1、发送重试策略
发送消息需要收到IM端回执 若未收到或超时需重试策略
2、幂等处理策略
发送侧针对重试消息生成唯一的messageId IM端根据messageId进行去重
3、消息推送确认
IM将消息推送给终端用户侧 终端用户侧返回ack确认机制 未收到消息IM端将重新推送 终端用户侧会对消息幂等处理
4、消息的顺序性
IM服务端提供序号生成器 保证群级别消息的顺序性 序号生成器分布式高可用 客户端对接收到的再整流
5、消息的安全性
私有二进制协议代替Json等 使用非对称加密传输协议 DNS被劫持和篡改等
6、处理的原子性
使用分布式锁实现 使用分布式事务实现 原子操作的命令和脚本
阅读原文
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。