前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >No.179# IM即时通信知识点梳理

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

作者头像
瓜农老梁
发布2023-02-23 16:36:35
6230
发布2023-02-23 16:36:35
举报
文章被收录于专栏:瓜农老梁

引言

客服答疑、私信、群聊、直播等全部或者部分场景往往公司必须的。

本文主要走查下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、处理的原子性
  • 使用分布式锁实现
  • 使用分布式事务实现
  • 原子操作的命令和脚本
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜农老梁 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、逻辑架构图示
  • 2、逻辑分层说明
  • 3、消息推送通道
  • 4、消息发送流程
  • 1、消息内容
  • 2、消息索引
  • 3、最近联系人
  • 1、发送重试策略
  • 2、幂等处理策略
  • 3、消息推送确认
  • 4、消息的顺序性
  • 5、消息的安全性
  • 6、处理的原子性
相关产品与服务
即时通信 IM
即时通信 IM(Instant Messaging)基于腾讯二十余年的 IM 技术积累,支持 Android、iOS、Mac、Windows、Web、H5、小程序平台且跨终端互通,低代码 UI 组件助您30分钟集成单聊、群聊、好友与资料、消息漫游、群组管理、会话管理、直播弹幕、内容审核和推送等能力。适用于直播互动、电商带货、客服咨询、社交沟通、企业办公、互动游戏、医疗健康等场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档