网易云信的应对之道及优化方向
项望烽介绍到,针对这种请况,网易云信会让无上限人数的聊天室的用户都连接到相同的一组服务器上,这样到消息投递过来的时候,就不需要进行用户在线状态的查询,只需要把消息投递到相应的几台或者几十台服务器上即可。但这种请况下,对于移动端的要求更高,等于每一个聊天室移动端都要重建一个TCP连接,又要能够保障每个直播间或者说每个聊天室都能够秒进。而且因为聊天室人员的流动新,用户经常从一个主播切换到另外一个主播,导致聊天室切换,重连也比较频繁。那么在这种请况下,移动端怎么做优化工作呢?
项望烽说:“首先我们可以将一个IM产品或者说一个聊天室场景分为几个环节:连接服务、登录、发送消息和接收消息。所谓的网络优化也就是针对这几个环节而已,怎么更快的连接服务器,怎么更快更安全的登录服务器,怎样保证消息快速抵达和不丢,以及最后一步——怎么优雅的接收消息。”网易云信的优化工作,也正是从这几个环节入手。
双模式综合应用,确保连接稳定快速
首先,从连接维度着手。相比起传统拿一个域名去链接服务器并发送请求的方式,网易云信采用HTTP DNS和内置IP列表两种模式综合应用。一方面,用 IM 应用服务器作为一个功能类似lbs的服务器,通过 IM 的长连接获取聊天室IP地址,获取后的服务器地址缓存在本地使用。这样就能够保证绝大部分的连接都是用 IP 做直连,而且能够连接到最适合当前客户端的服务器。同时,在保活保连方面,经简心跳包,并减少心跳包的频率。针对重连请况,做一定的退避机制和启用淘汰机制。如果重连某台服务器次数超过一定的阈值就尝试下一台服务器。
多维度优化,为登录顺畅保驾护航
在登录方面, 网易云信将加密和登录请求放在一个环节中来完成,不使用公开的协议,而使用私有协议,自定义整个加密流程,去除证书下发和验证的过程,在保证安全且不容易被破解的前提下,保证能够最快的完成登录流程。此外,网易云信还在技术层面对现有协议进行了一系列的经简。使用二进制协议和压缩,尽量保证登录请求包足够小,减少因为分组带来的丢包率升高,而导致重传。此外,在登录后实现增量同步和按需同步,只有在真正需要的时候才进行信息的获取。
经心打磨文件上传,实现高效稳定
在纯文本信息和指令的发送上,网易云信采用了常见的依靠应用层ACK的模式,把更多的经力放到对文件上传的优化方面。在演讲中,项望烽用欢乐青年和普通青年的比喻点明了既有文件上传思路的缺陷,也就是移动网络的低带宽、高延迟、高丢包率导致了普通的上传非常容易失败,大量的TCP分组和简单的分块上传,依然容易出现重传次数过多和较高的失败率。针对这一问题,网易云信根据网络类型来预估分块大小,并进行动态调整,同时为了减少RTT的影响采用Pipelining技术,在一个TCP连接上顺序发送多个请求,同时为了提高上传成功率做一定程度的限速,防止一次发送的数据过载,造成过多的TCP分组。在业务层面,譬如音频传输,则采取边录边传的模式来达成高效优化。
2016年,视频直播行业迎来了空前的大爆发,而且移动直播客户端的用户访问量也呈现出井喷的趋势,围绕多数主播的“同房”观众往往数以万计,大有重现甚至超过当初BBS时代聊天室的盛况。但对于直播平台或者聊天室的运营者而言,庞大的用户访问量引发的卡顿、宕机、崩溃、消息发送和接收不畅,以及移动端弱网络等问题也成为了无法回避的痛点。网易云信凭借自身多年的技术沉淀及大量全方位的经打细磨,推出了 “无人数上限直播聊天室”的解决方案(包括UI组件、P2P 群组、聊天室,而且都是开源),及时为直播行业的蓬勃发展扫清了障碍。对于整个IM云行业来说,网易云信在移动网络各个环节的优化,不仅提供了一个非常好的思路,还在细节方向的层层深挖的态度上,树立了专业、严谨和创新的经神典范。
了解更多,请点击http://www.netease.im/
关于网易云信:
网易云信是网易公司集16年IM经验打造的即时通讯云服务(PaaS),是网易云第一个开放给市场的云服务产品。开发者通过集成客户端SDK和云端OPEN API,即可快速实现强大的IM功能,作为PaaS服务模式的网易云信全面支持Android、iOS、Web、PC等多平台。除了应对传统开发者的各项IM基本功能外,网易云信还提供了高级通讯功能,包括实时音视频、互动直播、教学白板、专线电话、短信、专属云在内的独家功能以及更多其他服务。网易云信满足包括游戏、协同办公、在线医疗、在线客服、在线教育、娱乐、咨询、生活服务、物流、旅游、金融等各行业各种产品的即时通讯服务需求。
(责任编辑: HN666)