原文网址:http://www.csdn.net/article/2015-12-22/2826542
1.系统架构设计。系统架构逻辑上划分,划分为四层,最下面的一个是提供魅族手机的接入。第二层是消息分发服务,主要的作用就是提供上行消息的路由和用户下行消息的路,这边有一个用户路由表。第三层是订阅信息,第四层是存储,包括离岸消息存储,包括订阅消息的存储。
2.手机功耗问题主要涉及两个点,第一个是流量,第二个是电量。先看流量的问题,怎么样解决流量的问题,通过协议选择,现在传统的互联网上,有比较典型的使用通讯协议的话,是这两个协议,XMPP、SIP,这两个协议有很多的优点,第一个是开元组件非常多,如果想快速的搭建一脱系统出来,这两个协议是比较好的选择。不足的地方是协议很复杂,单独的标准文档就有几十页,如果完全把它看完,弄懂,估计要花长的时间,因为这两个协议是基于互联网的,并不是针对移动互联网进行优化的,所以协议是比较重的,像XMPP,有很多无用的标签,我们根本用不到这些标签,包括SIP协议,也有很多头,和XMPP协议差不多的。最重要的一点是非常的耗流量,所以我们就自己定义了IDG的协议,轻量、编解码属于快,是上面两个协议的10倍左右的编解码速度,最重要的一点是节约流量,使用中发现节约流量到50%到70%。
3.下面讲一下有个延迟推送,系统使用过程中,我们发现有些用户对实时性的要求并不是特别的敏感,比如说系统的升级、应用的升级,早几分钟,或者是晚几分钟,并不会影响用户的使用体验。我们对于这种实时性要求不高的消息,可以使得手机在唤醒的状态下才把信息推送下去,我们怎么知道手机处于唤醒状态呢?这个服务端是可以感知得到的,前面讲过手机要维持长连接,就要发心跳,发心跳就要唤醒手机,服务端收到心跳包的时候,再把消息推送下去,这样就可以相对来说降低一点手机的功耗问题。通过这三个点的优化,基本上相对来说是比较完美的解决了手机的功耗问题,不过这个只是其中一步其中一个坑,我们革命还未成功。
4.灰度发布。灰度发布,是用户无感知的发布,还有用户可以平滑的迁移,用户平滑迁移之后,我们做在灰度里面,负载均衡里面也是可以用到这个功能,假设一个集群里面,某一个节点的用户数比较多的时候,可以把负载高的迁一部分用户到负载比较低的节点上面去。
5. 作者介绍:于小波,2011年加入魅族,现在在移动互联网部门,主要从事服务端后台开发工作,专注于系统高并发,分布式等解决方案。