推送(互联网时代新型的词语)

2023-12-04 25阅读

温馨提示:这篇文章已超过410天没有更新,请注意相关的内容是否还可用!

推送

互联网时代新型的词语

推送,是互联网时代新型的词语,同时也是新兴的方式。网页推送,是指将经过整理的信息资源以网页的形式迅速转发至用户的界面,实现用户的多层次需求,使得用户能够自己设定所需要的信息频道,并直接在用户端接收定制信息的实现方式。

propelling movement

网页推送

网页推送是指将经过整理的信息资源以网页的形式迅速转发至用户的界面,实现用户的多层次需求,使得用户能够自己设定所需要的信息频道,并直接在用户端接收定制信息的实现方式。

服务器推送

Server push——崭新的“推”技术,它是一种先进的服务器和客户机之间的通信连接方式,利用在服务器端的CGI脚本程序把数据源源不断地推向客户机,从而使客户机和服务器之间的交互性能大大提高。在中国计算机报电脑工作室中有介绍Server push,我们也搜集整理一些关于Server push的资料,供大家参考。

首先也来看看传统Client pull的工作方式,Client pull以 这样的HTML文档头来自动刷新页面,使用户的浏览器能不断地刷新以接受服务器传回的内容,那么用户就不得不忍受等待“time”值的痛苦,相信在中国电信的网速之下,大家对这个深有体会。

采用了Server push技术的服务器在客户机做出一个请求后,和客户机建立一个永久的连接,然后服务器会根据客户机的请求不断把数据包推向客户,这个推的过程是不间断的。由服务器推向客户机的数据在客户机的浏览器上会不断产生新的内容,而且不会产生Client pull那样的HTML文档头,从而大大减少了延迟的时间,向(服务器响应——客户机请求)同步迈进了一步。

实现Server push技术非常简单。Server push在服务器的CGI脚本声明HTML文档类型时,把传统的content-type:text/html改为content-type:multipart/x-mixed-replace;boundary=BOUNDARY这样的文档类型,就会反馈给用户一个Server push类型的连接。这是Server push和Client pull的根本区别。如果CGI脚本中提供了这样的HTML文档头,服务器在处理客户机请求调用CGI脚本程序时,就会把CGI脚本中指定的数据强行推给客户机。

Server push在生成页面时会采用很多的技巧来处理用户端浏览器页面的生成。主程序和传统方式没有本质的区别,但记得在脚本中加入print“Content-Type:multipart/x-mixed-replace;boundary=BOUNDARY”这样的文档头。应用在PERL写的CGI聊天室中有立竿见影之效,其速度和刷新方式和传统聊天室不是一个档次的。

常用的服务器推送技术实现方式有以下三种。

1、服务端代码编程:最简单的方法是通过服务端代码编程实现,响应代码中使用死循环。当Web服务器接收到客户请求后开启一个线程执行服务端代码,而该方法由迟迟不肯结束,使线程无法释放。这种方法的缺点是当客户端数量增加时,服务器依然会承受很大的负担。

2、使用特定的Web服务器:目前的趋势是从Web服务器内部入手,用NIO(JDK1.4提出的java.nio包)改写Request/Response的实现,再利用线程池增强服务器的资源利用率,从而解决这个问题。JDK1.4版本最显著的新特性就是增加了NIO,能够以非阻塞的方式处理网络的请求,这就使得在Java中只需要少量的线程就能处理大量的并发请求了。目前支持这一非J2EE官方技术的服务器有Glassfish和Jetty。Jetty6设计来处理大量并发连接,它使用Java语言的不堵塞I/O(java.nio)库并且使用优化的输出缓冲架构。Jetty也有一个处理长连接的杀手锏:一个称为Continuations的特性。Grizzly作为GlassFish中非常重要的一个项目,就是用NIO的技术来实现应用服务器中的高性能纯Java的HTTP引擎。Grizzly还是一个独立于GlassFish的框架结构,可以单独用来扩展和构建自己的服务器软件。使用NIO不是一件简单的技术,它的一些特点使得编程的模型比原来阻塞的方式更为复杂。

3、使用框架:基于Java的成熟的服务器推送框架有DWR(DirectWebRemoting)。DWR是开源的基于Apache许可协议的解决方案,它通过将服务器端的Java代码映射称浏览器端可使用的JavaScript来实现远程调用,本质上还是Ajax实现。DWR从2.0开始增加了服务器推送功能。Java平台上Ajax-RPC还有Dojo、Comet4J、Pushlet等框架,但DWR相对成熟且功能完善。DWR可以将Java对象中需要远程调用的public方法自动转换成浏览器端可直接调用的JavaScript代码,这些代码发出的请求由指定的DWRServlet处理后自动直接调用相应的Java方法。这样整个过程开发者不需要直接处理XMLHttpRequest也不需要处理方法参数或转化返回值,都由DWR自动实现。这种实现方式技术成熟,配置简单,DWR与Spring、Struts2、ExtJS都能整合。

手机推送

内容

手机推送服务是指服务器定向将信息实时送达手机的服务。与常见的轮询方式(伪推送)相比区别主要在于两点,一是否长联网,二是到达实时性。推送服务是长联网的,一般到达手机的延迟在0.1-0.5秒左右,而轮询方式(伪推送)不是长联网的,达到延迟时间则根据轮询时间的不同为1-10分钟,也有延迟1小时或一天的情况。一般来说,自黑莓,苹果和安卓采用标准长连接推送方式后,手机推送服务就特指能够实时到达的形式。

手机推送服务的原理很简单,就是通过建立一条手机与服务器的连接链路,当有消息需要发送到手机时,通过此链路发送即可。

推送服务的使用流程虽然略有差别但是大致都和 iOS的APNs 相似:

1、首先是应用程序注册消息推送。

2、 iOS 向 APNs Server 取得deviceToken。应用程序接受deviceToken。

3、应用程序将deviceToken发送给PUSH服务端程序。

4、 服务端程序向APNs服务发送消息。

5、APNs服务将消息发送给iPhone应用程序。

实现方式

1、Android 推送

方案1、使用C2DM服务(Google Cloud Messaging)

简介:Google推出的云消息服务,即第二代的G2DM。

优点:Google提供的服务、原生、简单,无需实现和部署服务端。

缺点:Android版本限制(必须大于2.2版本),该服务在国内不够稳定、需要用户绑定Google帐号,受限于Google。

方案2、使用XMPP协议(Openfire + Spark + Smack)

简介:基于XML协议的通讯协议,前身是Jabber,已由IETF国际标准化组织完成了标准化工作。

优点:协议成熟、强大、可扩展性强、主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。

缺点:协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。

方案3、使用MQTT协议

简介:轻量级的、基于代理的“发布/订阅”模式的消息传输协议。

优点:协议简洁、小巧、可扩展性强、省流量、省电,应用到企业领域,且已有C++版的服务端组件rsmb。

缺点:不够成熟、实现较复杂、服务端组件 rsmb 不开源,部署硬件成本较高。

方案4、使用第三方推送服务

简介:通过嵌入SDK使用第三方提供的推送服务,主流的有百度云推送,极光推送,智游推送,Urban Airship,个推,PUBNUB,蝴蝶等。

优点:稳定,成熟,节省开发和探索时间,相对自己开发成本低,推送管理界面及统计程序完善。

缺点:有程序嵌入顾虑

2、IOS推送

推荐使用APNS服务,稳定,方便,美中不足是没有推送到达的回执和统计,不方便产品运营。如对此方面有需求可以使用极光推送,个推蝴蝶等第三方推送服务解决。

3、Win-Phone推送

使用MPNS(Microsoft 推送通知服务),相应速度不错,但推送不带状态,很多功能无法实现。

评价标准

推送方案的公认评价采取4s标准:

1.Safe (安全)

推送方案应支持透传及各种加密方案,保障信息传递安全。

推送方案的ID系统应该独立于已有的网站或服务的ID系统,这样保障用户在不同手机上登录后的信息投递准确 性,避免因为取消绑定事件失败因网络传输而造成的信息误投送。

2. Stable(稳定)

稳定包括两个部分一个是服务器端的稳定性,一个是手机端的稳定性。

服务端稳定性,因为使用长连接方案,对服务器的开销和要求很大,推送方案对服务器开发要求很高,海量线程连接下的服务器稳定性是非常具有挑战性的。一般的评判标准包括:

- 同时在线时峰值 (一般按照百万并发连接时服务器稳定性评测)

- 高并发时消息平均延迟时间(一般按照1分钟处理1百万条信息评测)

- 服务稳定性 (一般要求全年99.9%以上可用,有备份,有负载均衡等)

鉴于服务器稳定的开发难度很大,小团队不建议自己开发,建议使用稳定的第三方推送方案,如极光推送,个推,蝴蝶等。

手机端的稳定性,主要是因为中国的复杂网络状况及手机型号适配情况造成手机长时间稳定联网较困难,所以稳定性非常重要,一般的评判标准包括:

- 每日联网23.5小时以上用户比例 (表征联网稳定性)

- 消息发送后9小时内收到率 (表征到达率)

一般来说,推送方案要做网络的分运营商,分省,分机型适配,自己开发工作量较大。

3.Save(节省)

省电应注意CPU休眠,一般用服务缩短待机时间百分比评判。

省流量应注意协议的修改和冗余数据包的处理,一般用空载待机月流量评判。

省成本应考虑单服务器承载同时连接数,可承载同时连接数越多成本越低,业内顶尖水平为极光推送,个推的单服务器300万连接。

4.Slim(体积小)

客户端推送服务SDK应该体积尽量小,不影响主程序的大小和复杂度,一般以小于或等于300K为宜。

参考资料

1. 推送的英文_推送翻译_推送英语怎么说·海词词典

中文名 推送
外文名