作者:vivo互联网技术-LinDu、Li Guolin
一、背景
二、直播消息业务
三、消息技术点
手机客户端首先通过http请求长连接服务器,获取TCP长连接的IP地址,长连接服务器根据路由和负载策略,返回最优的可连接的IP列表。
手机客户端根据长连接服务器返回的IP列表,进行长连接的客户端的连接请求接入,长连接服务器收到连接请求,进而建立连接。
手机客户端发送鉴权信息,进行通信信息的鉴权和身份信息确认,最后长连接建立完成,长连服务器需要对连接进行管理,心跳监测,断线重连等操作。
使用protobuf协议数据交换格式
相同类型的消息进行合并发送
合并消息,可以减少传输多余的消息头,多个消息一起发送,在自定义的TCP传输协议中,可以共用消息头,进一步减少消息字节数大小;
防止出现消息风暴,直播业务服务器可以很方便的控制消息分发的速度,不会无限制的分发消息到直播客户端,客户端无法处理如此多的消息;
友好的用户体验,直播间的消息因为流速正常,渲染的节奏比较均匀,会带来很好的用户直播体验,整个直播效果会很流畅
客户端通过长连接获取的消息突增,下行带宽压力突增,其他业务可能会受到影响(例如礼物的svga无法及时下载播放);
客户端无法快速处理渲染如此多的礼物和公屏消息,CPU压力突增,音视频处理也会受到影响;
因消息存在积压,导致会展示过期已久消息的可能,用户体验(QoE)指标会下降。
结合具体业务特点,给各个业务类型的消息划分出不同等级,在消息分发触发流控的时候,根据消息优先级选择性丢弃低优先级消息。
消息结构体新增创建时间和发送时间两个字段,在实际调用长连接通道的时候,需要判断当前时间与消息的创建时间是够间隔过大,如果过大,则直接丢弃消息。
增益消息(纠正消息),在业务开发中,消息的设计中,尽量地去设计增益消息,增益消息指的是后续到达的消息能够包含前续到达的消息,举例来说,9点10的消息,主播A和主播B的PK值是20比10,那么9点11分分发的PK消息值就是22比10,而不能分发增量消息2:0,希望客户端做PK条的累加(20+2 :10+0),但是存在消息因为网络颤抖或者前置消息丢弃,导致消息丢弃,所以分发增益消息或者纠正消息会能够帮助业务重新恢复正常。
四、写在最后
END
猜你喜欢