网络科技

    今日:124| 主题:245146
收藏本版
互联网、科技极客的综合动态。

[其他] 网易云信 IM 推送保障及网络优化实践

[复制链接]
时鐘轻摇寂寞 发表于 2016-10-9 19:14:55
323 26

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本文根据网易云信Android端高级技术架构师 周江华在 MDCC 2016 移动开发者大会 上的演讲整理而成,PPT 下载地址: https://github.com/MDCC2016/Android-Session-Slides 。
     
网易云信 IM 推送保障及网络优化实践-1 (Android,下载地址,Windows,网络优化,在线教育)
      网易云信Android端高级技术架构师 周江华   大家好,我是来自网易云信的周江华,从 2009年毕业至今,我一直在从事 IM 客户端的研发工作,最早是 Windows 客户端开发,直至 2011 年开始转向移动端,先是 iOS,到 2012 年开始进行 Android 端的开发,从 2014 年到现在,一直负责云信 Android SDK 的开发工作。今天,我想和大家分享的是云信在保障 IM 推送和移动网络优化方面的一些实践经验。
  对于移动 App 来说,除了简单的工具类 App 外,IM 功能可谓非常重要,它能够创建起人与人之间的连接。社交类产品中,用户与用户之间的沟通可以产生出更好的用户粘性。电商类产品,用户与商家的连接能极大的促进沟通效率,降低沟通成本。教育类产品,学生与老师的连接让在线教育犹如课堂。医疗类 App,医生与患者的沟通让医生把脉更加准确。
  IM 应用如此之广泛,那么,IM 是什么,有些什么要求呢?IM 由两个字组成:Instant,Messaging。即时性要求有新消息时能够立即收到,如果程序在后台,则要能立即收到推送通知。而通信则要求稳定可靠,系统不宕机,程序不崩溃,安全,传递消息时不会被拦截监听,消息不丢,顺序不乱,不重复,如果包含音视频聊天,则要求延迟低,流畅不卡顿。这两点说起来容易,但是,要真正做出一套稳定可靠的商用级IM系统,挑战非常之多。下面,我会挑选影响 IM 即时性和消息稳定性最核心的两个问题,来看看都有哪些障碍,以及云信是如何去实践克服这些障碍的。
  首先第一个问题是消息推送,在 iOS 端有 APNS 做推送,相当稳定。Android 本身也有 GCM 可以用,但是在国内,我们有一个叫作“墙”的东西,直接就把 GCM 等 Google 服务全部挡在外面了,导致国内根本无法运用。对于 IM,当 App 退到后台,是必须还能够收到新消息提醒的,没有 GCM,怎么办?唯一能做的,就是后台运行了。Android 从设计上,就是支持真后台运行的,后台运行的特性也是 Android 现在能如此成功的原因之一。但另一面,Android 长久以来一直摆脱不了的卡顿、耗电等坏名声,后台运行也拖不了干系。因此,系统对于后台运行也不会放任自流。App 想要在后台运行,需要面对不少的障碍。
  第一个障碍是 Android 的 Low Memory Killer 机制。手机的内存毕竟是有限的,当后台运行的进程越来越多,内存剩余量也就随之减少。当有一个新的 App 想要启动,如果此时内存不够了,LMK 机制就会启动,从正在运行的进程中挑选一个清理掉,释放出空间,然后新的 App 就可以云信了。这个挑选过程显然不会随机拼人品,LMK 有两个尺度去评判。一个是进程优先级,优先级越低,被清理的可能性越大,另一个是内存占用,占的内存越多,被清理的权重自然也越大。
  因为 LMK 机制的存在,虽然 App 允许在后台运行,但同样也面临随时被清理的风险。因此,我们需要在被清理后及时的重新启动。常规的,有 4 种方式能够做到:
  
       
  • sticky service,就是在 Service 的 onStartCommand 中返回 sticky flag,这样当 service 被 kill 掉后,系统会将它加入重启的 pending 列表,在后面合适的时机再把 service 重启;   
  • alarm,闹钟,有循环闹钟和一次性闹钟两种,在闹钟触发后启动对应的组件;   
  • 在 Manifest 文件中静态注册的 Receiver,通过监听各种系统事件,比如开机、网络变化、mount/unmounts 等。在这些事件发生时启动组件,因为这种方式会造成在这些事件发生时系统容易卡顿,在7.0里面,Android增加了限制;   
  • JobScheduler,这是在 5.0 里面新增的,允许 App 在特定事件发生时做一些动作,比如充电、切换到 Wi-Fi 等。  


网易云信 IM 推送保障及网络优化实践-2 (Android,下载地址,Windows,网络优化,在线教育)
    虽说无论怎么做,App 终究免不了一死,但通过对照 LMK 的评判准则,我们还是可以降低 App 被清理的概率的。第一个就是降低进程的内存占用。如果采用单进程的模式,由于进程中包含了 UI、Webview、各种图片缓存等内容,内存必然会居高不下,降不下来。IM 软件一般都会采用双进程甚至多进程的策略,将 push 进程独立出来,在 push 进程里只处理网络连接和 push 业务,不参与任何其他业务逻辑,更不包含任何 UI。
友荐云推荐




上一篇:How to Change Your Browser’s User Agent Without Installing Any Extensions
下一篇:电充满后聊拍照:官方敲定OPPO R9s发布时间
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

王思源 发表于 2016-10-9 19:37:08
只吃楼主,撸过过经验,小伙伴们都惊呆了
回复 支持 反对

使用道具 举报

黄金单身小青年 发表于 2016-10-9 19:37:42
勿以坑小而不灌,勿以坑大而灌之。  
回复 支持 反对

使用道具 举报

Lonelyplanet 发表于 2016-10-9 19:38:39
吾生也有涯,而吃也无涯.
回复 支持 反对

使用道具 举报

mingjideyu 发表于 2016-10-9 20:15:25
是爷们的娘们的都帮顶!大力支持
回复 支持 反对

使用道具 举报

语蓉 发表于 2016-10-9 20:24:20
占位编辑
回复 支持 反对

使用道具 举报

小辉煌1 发表于 2016-10-9 20:24:30
OMG!介是啥东东!!!
回复 支持 反对

使用道具 举报

国豪 发表于 2016-10-9 21:00:06
你瞧你吧!看背影急煞千军万马,转过头吓退百万雄狮。
回复 支持 反对

使用道具 举报

lsh1812 发表于 2016-10-10 01:49:05
失而复得的东西。永远都是二手货。
回复 支持 反对

使用道具 举报

收起你那虚伪 发表于 2016-10-10 19:29:51
发发呆,回回帖,工作结束~
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表