对于推送的相关理解
1.对于推送的理解
推送是指服务器定向传递消息到客户端。
2.推送实现的两种方法
(1)Pull:客户端主动向服务器索取消息,按一定的时间间隔向服务器查询是否有新消息。
(2)push:服务器主动向客户端推送消息,需要建立客户端到推送服务器的长连接,服务器端可向推送服务器发送推送信息,推送服务器收到信息后通过已经建立好的长连接向客户端发布消息。
3.poll与push的优缺点
(1)pull:
优:不需要额外实现,对网络要求不高。
缺:受查询频率的影响,不能确保推送消息的实时性,延迟较高。
(2)push:
优:消息的延时低。
缺:实现较为繁琐;由于需要维护客户端到推送服务器的长链接,故对网络要求较高;对客户端流量和电量的消耗更大。
4.推送系统设计的主要目标
低迟延,低功耗,低成本,系统稳定,可靠。
5.推送系统设计中主要考虑的外部条件
网络环境,客户端服务支持,客户端数量,服务器的吞吐率,开发的硬件成本,系统对延迟和稳定性的要求。
6.推送系统设计需要解决的具体问题(push实现方法下)
(1)长链接的心跳算法
心跳频率:需要对延时和能耗进行平衡。
心跳的重启时机:在网络不稳定,网络切换等情况下需要重启心跳。
(2)端与端之间数据传输的方式
需要考虑对传输流量的控制。
(3)对客户端在线和离线的处理
对离线客户端所囤积的推送信息的处理。
7.推送系统的更多要求
服务器对高并发的处理,如何使推送服务能在客户端长时间运行,怎样去判断消息是否传达到位,推送在两个平台间差异处理等。
8.ios和android系统推送设计的特点
(1)ios系统的推送服务必须依赖于apple的APNS(ApplePush Notification service)。
(2)android系统的推送服务有google的GCM(Google Cloud Messaging)也就是之前的C2DM服务(Android Cloud to Device Messaging )。然而由于网络问题,国内的推送基本不能使用该服务,所以需要应用商自行设计推送系统。