即时消息技术剖析与实战

IM 系统涉及到的后端知识

网络 ,消息队列,缓存,数据库,加密等。

高并发业务场景

千万级实时在线用户,百亿级消息下推量,突发热点直线峰值。

TCP 通道堵塞

图片流与文本流共用一个通道,应该拆分
视频 PSR1(一秒内播放成功率)低,消息增加 notif-pull 模式,提前拉取

IM 概要组成

账号 , 联系人,关系 ,会话,消息
IM 系统
客户端 ,接入服务,业务处理服务,存储服务,外部接口服务。

接入服务=>接入层
连接保持,协议解析,会话维护,消息推送,编解码(protobuf)

业务处理服务=》业务层
消息存储,未读数变更,最近联系人

存储服务
账号信息,关系链,消息本身,用户设置。

外部接口服务
APNS & GCM(google cloud messaging,国内无法用,安卓手机厂商提供系统推送服务代替)。

IM 特性

实时性
可靠性
不丢消息,消息不重复。
一致性
时序,序号生成器
安全性
数据传输安全,数据存储安全,消息内容安全。

专有名词

telegam
MQ
rtx
socket
nio
网关服务
QPS (每秒查询率)
NAT 超时 (5min)
心跳包频率 4.5 min
微服务 rpc
保活联盟
Ack
业务 ack
sid
集群化部署
NTP
ttl
localDNS
kafka

消息实时性方案

短轮询
长轮询
长链接,websocket(全双工,h5时代) ,xmpp,mqtt,基于 TCP 或 UDP的私有协议(更安全),实现边缘触发。
轮询都是基于无状态的 http协议。
xmpp 基于 xml 冗余
mqtt (轻量级)基于代理 的“发布/订阅”模式,胜流量,拓展性强,但不支持群组,离线消息等。

断网重连

需要提供本地保存的最新消息

可靠投递

不丢
不重复
超时重发,IM服务器去重,消息唯一 id
ack + 超时重传 + 去重 + 时间戳比对

消息序号生成器

时序一致性
时序基准
全局时序生成器db 自增 ID ,Redis 原子自增命令 incr twitter 的 snowflake
分布式时间相关 id 生成器
本地整流
服务端包内整流
packageid

消息安全性

访问入口安全
传输链路安全
dns 域名劫持
httpdns
TLS
端到端加密
中断 截获 篡改 伪造

消息内容安全

钓鱼,涉黄 ,反动
敏感词库
鉴黄
语音转文字,图文识别(ocr)
爬虫分析外链

你可能感兴趣的:(笔记)