为什么80%的码农都做不了架构师?>>>
即时通讯网
http://www.52im.net
《Android进程保活详解:一篇文章解决你的所有疑问》
《Android端消息推送总结:实现原理、心跳保活、遇到的问题等》
《为何基于TCP协议的移动端IM仍然需要心跳保活机制?》
《微信团队原创分享:Android版微信后台保活实战分享(进程保活篇)》
《微信团队原创分享:Android版微信后台保活实战分享(网络保活篇)》
《移动端IM实践:实现Android版微信的智能心跳机制》
《移动端IM实践:WhatsApp、Line、微信的心跳策略分析》
原文链接
不管用不用mars,这两篇文章,移动开发都值得看下:
微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog
http://blog.csdn.net/tencent_bugly/article/details/52836889(csdn里有问答)
常见问题
微信终端跨平台组件 mars 系列(二) - 信令传输超时设计
Android微信智能心跳方案
客户端的日志处理:
原则:
- 流畅性(不影响应用) 完整性(不丢) 容错性 (部分错误不影响整体)、安全性(不被外部窥探);
- 日志规范,只打印仅打印有用日志
技巧:
- 使用mmap;
- 压缩技巧,算法选择和压缩流程;
- 日志文件分离,至少crash的可以分离;
- crash日志必须上报,其他日志应用控制;
- 根据magic num做了版本区分;
其他:
写文件的 SSD的“写放大”问题
信令传输超时设计:
测试厂商的RTO,每个厂商不一样,苹果的值得参考;
OPPO:[ 0.25s,0.5s,1s,2s,4s,8s,16s,32s,64s,64s,64s …]
IOS:[ 1s,1s,1s,2s,4.5s,9s,13.5s,26s,26s … ]
处理:
-
减少无效等待时间,增加重试次数:当 TCP 层的重传间隔已经太大的时候,断连重连,使得 TCP 层保持积极的重连间隔,提高成功率;
-
切换链路:当链路存在较大波动或严重拥塞时,通过更换连接(一般会顺带更换IP&Port)获得更好的性能。