最近在看“
服务器推送技术
”,在B/S结构中,通过某种magic使得客户端不需要通过轮询即可以得到服务端的最新信息(比如股票价格),这样可以节省大量的带宽。
传统的轮询技术对服务器的压力很大,并且造成带宽的极大浪费。如果改用ajax轮询,可以降低带宽的负荷(因为服务器返回的不是完整页面),但是对服务器的压力并不会有明显的减少。
而推技术(push)可以改善这种情况。但因为HTTP连接的特性(短暂,必须由客户端发起),使得推技术的实现比较困难,常见的做法是通过延长http连接的寿命,来实现push。
接下来自然该讨论如何延长http连接的寿命,最简单的自然是死循环法:
【servlet代码片段】
public void doGet(Request req, Response res) {
PrintWriter out = res.getWriter();
……
正常输出页面
……
out.flush();
while (true) {
out.print("输出更新的内容");
out.flush();
Thread.sleep(3000);
}
}
如果使用观察者模式则可以进一步提高性能。
但是这种做法的缺点在于客户端请求了这个servlet后,web服务器会开启一个线程执行servlet的代码,而servlet由迟迟不肯结束,造成该线程也无法被释放。于是乎,一个客户端一个线程,当客户端数量增加时,服务器依然会承受很大的负担。
要从根本上改变这个现象比较复杂,目前的趋势是从web服务器内部入手,用
nio
(JDK
1.4提出的java.nio包)改写request/response的实现,再利用线程池增强服务器的资源利用率,从而解决这个问题,目前支持这一非J2EE官方技术的服务器有
Glassfish
和
Jetty
(后者只是听说,没有用过)。
目前也有一些框架/工具可以帮助你实现推功能,比如pushlets。不过没有深入研究。
这两天准备学习一下Glassfish中对Comet(彗星:某人给服务器推送技术起的名字)的支持,呵呵。
分享到:
相关推荐
- **长轮询(Long Polling)**:长轮询是AJAX轮询的一种优化,服务器接收到请求后不立即响应,而是保持连接,直到有新数据时才返回,然后客户端再次发起请求,这样减少了不必要的网络通信。 - **WebSocket**:...
m16+enc28j60组成的网络接口。 m16使用内部RC振荡8M。 ... 软件编写使用avrstudio4.12+sp4+winavr(avrstudio自带的winavr嵌入方式)。...源文件供大家参考,可任意使用,但请转载时注明出处:http://www.embed.org.cn。
两地居民直接接触的只有信鸽,他们从信鸽上那到他们想要的东西,对面的人长什么样子,是人是鬼他们全不在意,只要大家都会用信鸽就好了,http就是这样一只大家都会用的信鸽了。 希望现在大家已经对http有了清晰的...
长设置,默认为User:4057 Pass:4057,如果你感觉我解密此程序 不易,方便的话请在首页保留本站的88*31 Logo连接一个,:) 朋友如需要转载请保留此软件说明,万分感谢! ShowHoo.Z ------------------------------------...
import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream;...本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hotdust/archive/2009/08/05/4410714.aspx
欢迎转载,但请保留出处,谢谢 ******************************* 很久没有发布东东了,今天看到盒子上有朋友发布了个三层的东东, 下来大概看了看,貌似使用起来不太方便,曾经用过ASTA和RmoObject,都不是那么让...
然后填写数据库连接字符串,这里是定义了采集到的数据插入到哪个数据库,后面选择表名,不必说了。 <br>网页编码,不出意外的话,中国大陆都可以采用UTF-8 <br>爬取文件名的正则:呵呵 这个工具明显是给...
TCP负责建立可靠的数据传输连接,IP负责数据包的路由。开发者需要理解如何通过API接口与操作系统底层进行交互,实现网络通信。 2. **HTTP/HTTPS协议**:QQ注册可能涉及HTTP或更安全的HTTPS协议。HTTP是超文本传输...
其中maxInactiveIntervalInSeconds是设置session有效时间,以秒为单位,但实际上无论怎么设,session真实有效时间还是会比我们设置的稍微长一些。 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="...
- **WEBSERVER**:涵盖Web服务器的性能指标,包括页面加载时间、并发连接数等。 - **WEBLOAD的压力参数**:定义用于控制Web负载的各种参数,如并发用户数、请求频率等。 #### 十一、附录 - **性能测试常见术语**...
基于视频序列捕获人体运动和人体运动分析 如何制作一个可控制的人体骨骼模型 描述:本文提供一种将骨架动作矢量...本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hardVB/archive/2005/08/10/449922.aspx
Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type ... 捕获释放 event....加入收藏夹 onclick="window.external.AddFavorite("http://www.google.com/", "google...
新手需要花费较长时间领会良好的面向对象设计是怎么回事。有经验的设计者显然知道一些新手所不知道的东西,这又 是什么呢? 内行的设计者知道:不是解决任何问题都要从头做起。他们更愿意复用以前使用过的解决方案...
下载地址:http://qt.nokia.com/downloads 如下图我们下载:Download Qt SDK for Windows* (178Mb) 下载完成后,直接安装即可,安装过程中按默认设置即可。 2.运行Qt Creator,首先弹出的是欢迎界面,这里可以打开其...
4、通过USB线把打印机连接到电脑上。 5、打开General Tool软件,在其上选“USB PORT”一项 6、此时选择“SET DESTINATION 1 ”,就可以重置EEPROM。 ==========================================================...