DDPush消息推送 网络流量分析

网络流量,特别是无线电话网络流量,有时候并不是它所应该的那么便宜。即使不考虑价格因素,更快的速度、更高的通信效率这些目标也决定了我们不能无节制地消耗流量,至少不环保。实际上,DDPush从设计的初期开始,就以尽可能少的网络传输作为核心目标。

终端上载流量

根据DDPush当前的通信协议,终端上传的一个UDP数据包,有效数据最少为21字节。加上UDP和IP包的首部长度,不会超过70字节。移动互联网环境下,假设终端每5分钟发送一次心跳包(这个是建议值,过于频繁可能导致智能终端(手机)电池电量消耗过快),则一个月的上载数据量为70x12x24x30=604800字节,约合591K。这就是DDPush客户端所消耗的上载流量(完全空载运行情况下)。

实际情况可能有些不一样,因为当手机处于非休眠状态的时候(智能手机大部分时间都是休眠的),我们可能希望心跳的间隔小一些,以便更及时地收到实时信息,又不至于消耗过多的电(非休眠状态下是非常耗电的,不在乎多耗一些了)。所以,DDPush客户端的上传流量会比上述的591K稍多一些。

终端下载流量

DDPush终端的下载流量远比上传流量少(详见协议内容和使用文档),而且在无信息通知的情况下,DDPush服务器可通过参数配置成不下发心跳,这时将不会有下载流量产生。当然,这种情况下终端可能无法判断自己是否在线。

服务器流量

对于服务器而言,主要的流量是入站流量,这与大部分互联网服务恰恰相反(例如HTTP服务就是典型的入站流量小,出站流量大)。其实这也是IM系统的一个特点。根据DDPush的测试,独享百兆带宽出口(100m bits/second)的网络,可支持一千万以上终端同时在线(5分钟一次心跳,平均每秒3.33万个UDP心跳包,完全是DDPush的能力之内,这时UDP包的成功率将近100%)

什么?独享百兆出口带宽太贵了?拜托,一千万在线客户,您已经是土豪了,就别在乎那一点点带宽费用了......

小结

使用DDPush消息推送,终端设备基本可以忽略DDPush客户端自身的流量;而服务端的流量,相对其收益来说,成本将是非常低的。