9月23日,MDCC 2016中国移动开发者大会在京举行。会上,网易云信Android端高级技术架构师周江华发布了题为“云信IM推送保障及网络优化实践”的主题演讲,与所有开发者共同分享了网易云信IM在应对弱网环境、移动端硬件限制以及Android复杂的生态现状时的探索与心得,由此再度引发了业内对于IM云通讯,尤其是PaaS(Platform -as-a -Service)云服务平台发展思路的思考。
网易云信Android端高级技术架构师 周江华
企业级IM云服务市场的黑马
当前,基于移动产品服务和互联网+浪潮在国内的发展态势,众多互联网公司、新创业团队乃至传统行业都将目光瞄向了移动互联市场。而在越来越讲求用户粘度和在线互动的当下,从网络购物到在线教育,从协同办公到在线医疗,各个行业各种产品的IM即时通讯服务已经成为如同工业时代水电煤一般基本却重要的刚性需求。
《中国公有云平台白皮书》数据显示,中国云服务市场增速连续几年在65%左右,越来越多的企业和厂商正在进行转型,将会进一步拉动云服务市场的快速发展。正是看到了这一趋势的势不可挡,网易凭借在即时通讯领域长达16年的经验与技术积累,推出了网易云信。
据介绍,网易云信是网易公司集16年IM经验打造的即时通讯云服务(PaaS),是网易云第一个开放给市场的云服务产品。开发者通过集成客户端SDK和云端OPEN API,即可快速实现强大的IM功能,作为PaaS服务模式的网易云信全面支持Android、iOS、Web、PC等多平台。
截至2016年9月,获得56项技术专利,通过CSA-STAR和ISO27001双重国际权威认证的网易云信,已经有9万+开发者接入,覆盖用户3亿,在教育、医疗、O2O、游戏、社交等行业都拥有众多用户支持,包括学而思网校、网易云音乐、宝宝树等知名APP均已接入网易云信的IM服务。
移动IM之痛
周江华表示,相对于PC端,IM在移动端的情况更为复杂。首先是移动网络三大特点——慢、断、贵,这也就需要更多考虑到用户需求的复杂性。而且移动终端,尤其是Android系统自身的资源限制。内存、电量、流量,都很珍贵。一方面,Android系统的Low Memory Killer机制随时有可能强制关闭IM以释放更多内存,另一方面移动网络的弱网环境,乃至闲置断联,都对IM长时间在线提出了考验。
此外,还有复杂的Android生态环境,尤其是各家ROM逐步加大了对后台应用的控制力度,导致IM在后台保活保连难度越来越大。
“即时性要求有新消息时能够立即收到,如果程序在后台,则要能立即收到推送通知。而通信则要求稳定可靠,系统不宕机,程序不崩溃,传递消息时不会被拦截监听,消息不丢,顺序不乱,不重复。如果包含音视频聊天,则要求延迟低,流畅不卡顿。这两点说起来容易,但是,要真正做出一套稳定可靠的商用级IM系统,挑战非常之多。”周江华说。
多维度技术优化策略保障稳定
长期以来,提升消息推送达到率和到达速度,优化网络利用效率,节省系统资源,一直都是Android开发的核心和基础,不过,新技术,新方法也都在不停的涌现。
针对移动场景的弱网环境,为了确保真正的稳定,网易云信在多个维度上采取了优化措施,首先采用了特殊设计的高性能二进制网络协议,并使用了非常精简的协议头,尽量减少数据包大小。心跳间隔根据网络情况动态调整。掉线后,会有自动重连和快速重登,为了节省流量电量,以及防止造成对服务器的信令风暴,重连间隔会指数随机倍增退避。
在弱网环境下,快速的上传下载,更少的等待时间可以带来更好的用户体验。网易云信拥有断点续传、Pipeline技术、边录边传三大特色。断点续传可以减少因网络原因导致的重复传输,减少传输时间,节省流量。Pipeline技术则可以重叠利用http请求的响应等待时间,加快传输速度。发送语音消息时,录一段就发送一段,等到录制完毕时,只需要发送最后一段数据,可以做到录完就传完发送的效果。
同时,为了能够保证程序在后台的存活,云信SDK还采用的独特的分层架构,并设立了独立的长连接结合多元化的推送通道的方式,不仅大大减少了CPU和内存资源的占用,更提高了信息到达率,真正做到保活保连。