`

移动互联网跨终端推送架构设想

 
阅读更多

1 为什么需要全平台推送?

设想你有一个很棒的应用。以电商为例,用户搜索了一些产品,后来又放入了购物车。你的服务器记录了用户的这些行为,发现他可能会对某类商品感兴趣。而这类商品又刚刚新添加了一些特别炫的新货,不需要用户再次查询,应用会立刻通知给用户:“嘿,瞧瞧这新东西,也许你会喜欢!”。从技术角度怎么实现呢?显然我们需要一个push服务。相对Pull的方式,Push不仅仅能更实时的提供信息,更省电,而且基于server端强大的数据挖掘能力,push可以主动的发现和提供更多的有用信息,对用户来说,这很cool;对公司来说,这是商机。

 

移动互联网全平台是包括IOS,Android,Windows Phone等全部主流移动设备在内,也许还应该包括浏览器和PC终端。现在用户已经不仅仅局限于某一种方式接入移动互联网,更常见的是用多种方式,多种设备。无论从技术构架层面还是公司层面,显然不能接受只能推送一种设备。

 

2 推送服务概述

主流移动平台几乎都提供了push服务的解决方案,

Apple Push Notification

APN

Android Push Notification

Windows Phone Push Notification

图看起来一个比一个复杂,概括起来移动设备push服务主要组件是:

 

(1)Push Notification 服务器

PN服务一般由移动系统厂商提供,主要通过心跳和移动设备保持长连接。

 

对于IOS和Windows Phone设备,国内开发者都可以很方便的Apple和Microsoft提供的PN服务,这里暂不展开。Android系统稍微复杂些,因为google的C2DM服务国内访问被墙,最好是自己实现server和android设备的长连接。好在实现起来也不复杂,本质上和维护一个PC client的长连接没有什么区别。可以参考一个基于XMPP协议的开源实现:https://sourceforge.net/projects/androidpn/

 

(2)Push App 服务器

即APN中的provider,Android中的App Server,负责推送具体数据。PA服务器需要根据PN服务的推送协议,向PN服务器发送数据包。比如,PA服务器需要根据APN协议封装二进制payload并推送数据到苹果PN服务器(APN)。或者根据Windows Phone push协议调用MPN http接口,推送数据。

 

(3)设备注册服务

用于绑定用户信息和用户设备。对于全平台推送,应该支持一个用户绑定多种设备。

 

网页浏览器push

使用Comet协议,不展开。

 

PC客户端

使用Socket长连接,不展开。

 

push服务架构构想

跨终端推送架构的核心是提供和设备解耦的数据push服务。


 

1,通过各种协议网关,将移动互联网上全部用户看成统一的长连接终端,通过封装不同的推送方式,为推送服务提供统一的推送接口。推送服务本身应该是独立于设备连接方式的。

2,推送服务应该具有插件式扩展能力,可以方便的添加或者删除任何一种设备的推送。

3,推送服务和push网关解耦合,任何一种设备推送挂掉不影响整个业务。

4,推送服务不关心具体是哪些数据应该被推送,只负责把业务变更的数据推送到网关。由网关自己检查是否有注册用户的设备信息,以及确定是否应该推送数据。这样push服务只专注于大量数据的实时推送,因此具备了很强的扩展性和伸缩性。

 

技术实现

push服务技术实现主要问题在于:(1)如何获得业务数据?(2)如何实现插件化?(3)如果解耦的将业务数据push到网关。

以上问题业界中各家应该有各家的解决方案。我想简单的方案是:

(1)数据量小,可以轮询数据库即可,push服务在本地缓存数据。数据量大,可以用消息队列。

(2)通过spring配置

(3)各个网关服务器和push服务之间也采用和APN或者MPN类似的接入方式,即Socket长连接或者是HTTP长连接。

  • 大小: 117.7 KB
  • 大小: 18 KB
  • 大小: 96.6 KB
  • 大小: 62.6 KB
分享到:
评论
1 楼 337240552 2012-11-01  

相关推荐

Global site tag (gtag.js) - Google Analytics