课件23张PPT。即时通讯架构“社交,是?人们运?用?一定的?方式(?工具)传递信息,交流思想,以达到某种??目的的社会活动。”常?见于?
?
?即时通讯,私信应?用
游戏服务器
?长连接信息推送通讯服务器组成iOSAndroid客户
端WPConnector连接集群LVS Logic逻辑集群
服务化数据集群(Session/Message)IM
数?
据
层消息中转LogicSession ClusterMessage ClusterUser A
1
Connector2345User B
6
ConnectorLogic“对安全性、?高可?用、扩展性的要求越?高,架构的变化越?大。”iOSAndroid客
户
端WPIMLVSConnector连接集群
Logic逻辑集群服务化数据集群(Session/Message)数?
据
层连接层1. 连接层的作?用
2. “允许随时重启更新/ 只允许晚上重启/不允
许重启断线”
3. 总的来说简单/异步?
? 陌陌连接层
总连接数 1200万+
单台服务器压测70万连接,?一般使?用50%(主流配置)AndroidWP客
户
端
IM iOS
Connector连接集群LVS Logic逻辑集群
服务化数据集群(Session/Message)数?
据
层逻辑层1.
2.
3.
4.?用户会话验证
消息存取
异步队列
随时重启AndroidWP客
户
端
IM iOS
Connector连接集群LVSLogic逻辑集群服务化数据集群(Session/Message)数?
据
层通讯协议“
安全性要求
流量要求
传输要求可靠&?高效 ”?
? 通讯协议
常?见协议XMPP/SIP
缺点:1.流量?大 2.不可靠 3.交互复杂ClientServer WIFI/2G/3G/地铁/电梯
10ms/200ms/12s/TCP half-closed通信协议设计??目标: ?
?
??高效:弱??网络快速的收发
可靠:不会丢消息
易于扩展msg:协议格式
良好的协议可以: ?
?
?简化系统设计
提供可靠个?高效的消息传输
易于扩展需求REDIS协议CR LF$
$
$bytes of argument 1
bytes of argument 2
bytes of argument 3CR LF
CR LF
CR LFdata
data
dataCR LF
CR LF
CR LFRedis协议
* number of argumentsSET name latermoon
* 3 $ 3 SET $ 4 name $ 9 latermoon
下?面都?用Redis协议来描述逻辑READ REDIS COMMAND基于队列的消息协议S:msg-send msg1
C:msg-recv 1
S:msg-send msg2
C:msg-recv 2
S:msg-send msg3 msg4 msg 5 msg 6
C:msg-recv 3 4 5 6Redis List:Client msg-send
msg-recv
msg-send
msg-recv
msg-send
msg-recv
List Base基于队列的交互
Server 传统的IM协议 前提是基于??网线、WIFI,??网络延迟极
?小
移动??网络下,交互极其费时,服务器
要维护每个状态容易出错“通讯协议优化,尽量减少?一次交互中数据往返的次数。”基于版本号的消息协议Redis Sorted Set:S:msg-psh
C:msg-sync
S:msg v 101 msg
S:msg v 102 msg
S:msg v 103 msg
S:msg v 104 msg
C:msg-?n v 104基于版本号的交互ClientServer msg-psh
msg-sync
msg-send
msg-send
msg-send
msg-send
msg-?n
Sorted Set Base针对弱??网络的优化协议 ?
?
?
?
?消息通过版本号维护顺序
新消息到达,Server只负责push通知
Client收到轻量的msg-psh后发出同步
请求
Server按照版本号连续发送msg
Client告诉Server收到最后的版本其它问题?
?核?心的?长连接只?用于传输轻量的实时数据
图?片、语?音等都可以开新的TCP或HTTP连接“?一切就绪后,最重要的就是监控。”监控