网易云信项望烽:聊天室场景下的移动网络优化

14331℃

即时通讯云发展至今,已经成为云计算应用的重要形态之一。在移动互联网时代,IM云服务以无与伦比的优势降低了各APP的开发成本,增加了APP用户的粘性。但相应的,移动网络环境的复杂程度对IM云平台的实时性和稳定性也带来巨大的挑战。尤其是在多人聊天室场景下,如何从根本上解决移动端的慢、丢、断等痼疾,成了摆在各家IM云平台面前的一大难题。

在12月4日,在北京国际会议中心召开的OSC(开源中国)源创会2016年终盛典北京站的活动中,网易云信的移动端技术专家项望烽,做了题为《聊天室场景下的移动网络优化》的主题演讲,和现场3000位技术开发者和业内人士,分享了网易云信是如何通过网络传输环节的优化,来保障IM云平台在移动聊天室领域的稳定、实时和高效。

网易云信项望烽
项望烽 在OSC源创汇年终盛典上做分享

突破传统群组思维和架构,实现无人数上限的聊天室

步入移动互联网时代以来,包括IM和聊天室在内,绝大多数相关应用的开发,都经历了从直接移植桌面端产品到移动端,到如今直接以移动端产品为主导的转变。而因为移动网络环境本身的复杂性,期间也不断遇到了各种难题。项望烽表示:”以目前覆盖人群最广的手机直播为代表的移动端聊天室为例,和常见IM应用不同,它从一个点对点的场景变为了群的场景,建立在群的架构上。如果是在线人数繁多、单位时间内消息量巨大的聊天室场景中,可能仅查询聊天室成员在线就会让服务器崩溃。而且还要顾及到本身视频直播的推位流和观众与主播的互动,以及各种复杂数据流的传输。这也是为什么常见IM聊天室都有人数上限和离线消息存入限制的原因。而网易云信则突破了传统群组思维来设计聊天室架构,实现了无上限人数的聊天室。”

网易云信的应对之道及优化方向

项望烽介绍到,针对这种情况,网易云信会让无上限人数的聊天室的用户都连接到相同的一组服务器上,这样到消息投递过来的时候,就不需要进行用户在线状态的查询,只需要把消息投递到相应的几台或者几十台服务器上即可。但这种情况下,对于移动端的要求更高,等于每一个聊天室移动端都要重建一个TCP连接,又要能够保障每个直播间或者说每个聊天室都能够秒进。而且因为聊天室人员的流动性,用户经常从一个主播切换到另外一个主播,导致聊天室切换,重连也比较频繁。那么在这种情况下,移动端怎么做优化工作呢?

项望烽说:”首先我们可以将一个IM产品或者说一个聊天室场景分为几个环节:连接服务、登录、发送消息和接收消息。所谓的网络优化也就是针对这几个环节而已,怎么更快的连接服务器,怎么更快更安全的登录服务器,怎样保证消息快速抵达和不丢,以及最后一步–怎么优雅的接收消息。”网易云信的优化工作,也正是从这几个环节入手。

双模式综合应用,确保连接稳定快速

首先,从连接维度着手。相比起传统拿一个域名去链接服务器并发送请求的方式,网易云信采用HTTP DNS和内置IP列表两种模式综合应用。一方面,用 IM 应用服务器作为一个功能类似lbs的服务器,通过 IM 的长连接获取聊天室IP地址,获取后的服务器地址缓存在本地使用。这样就能够保证绝大部分的连接都是用 IP 做直连,而且能够连接到最适合当前客户端的服务器。同时,在保活保连方面,精简心跳包,并减少心跳包的频率。针对重连情况,做一定的退避机制和启用淘汰机制。如果重连某台服务器次数超过一定的阈值就尝试下一台服务器。

多维度优化,为登录顺畅保驾护航

在登录方面, 网易云信将加密和登录请求放在一个环节中来完成,不使用公开的协议,而使用私有协议,自定义整个加密流程,去除证书下发和验证的过程,在保证安全且不容易被破解的前提下,保证能够最快的完成登录流程。此外,网易云信还在技术层面对现有协议进行了一系列的精简。使用二进制协议和压缩,尽量保证登录请求包足够小,减少因为分组带来的丢包率升高,而导致重传。此外,在登录后实现增量同步和按需同步,只有在真正需要的时候才进行信息的获取。

精心打磨文件上传,实现高效稳定

在纯文本信息和指令的发送上,网易云信采用了常见的依靠应用层ACK的模式,把更多的精力放到对文件上传的优化方面。在演讲中,项望烽用欢乐青年和普通青年的比喻点明了既有文件上传思路的缺陷,也就是移动网络的低带宽、高延迟、高丢包率导致了普通的上传非常容易失败,大量的TCP分组和简单的分块上传,依然容易出现重传次数过多和较高的失败率。针对这一问题,网易云信根据网络类型来预估分块大小,并进行动态调整,同时为了减少RTT的影响采用Pipelining技术,在一个TCP连接上顺序发送多个请求,同时为了提高上传成功率做一定程度的限速,防止一次发送的数据过载,造成过多的TCP分组。在业务层面,譬如音频传输,则采取边录边传的模式来达成高效优化。

2016年,视频直播行业迎来了空前的大爆发,而且移动直播客户端的用户访问量也呈现出井喷的趋势,围绕多数主播的”同房”观众往往数以万计,大有重现甚至超过当初BBS时代聊天室的盛况。但对于直播平台或者聊天室的运营者而言,庞大的用户访问量引发的卡顿、宕机、崩溃、消息发送和接收不畅,以及移动端弱网络等问题也成为了无法回避的痛点。网易云信凭借自身多年的技术沉淀及大量全方位的精打细磨,推出了 “无人数上限直播聊天室”的解决方案(包括UI组件、P2P 群组、聊天室,而且都是开源),及时为直播行业的蓬勃发展扫清了障碍。对于整个IM云行业来说,网易云信在移动网络各个环节的优化,不仅提供了一个非常好的思路,还在细节方向的层层深挖的态度上,树立了专业、严谨和创新的精神典范。