"BigPipe学习研究"疑问

11-05-04 banq
BigPipe学习研究 « 搜索技术博客-淘宝

看了这篇文章,有下面几个疑问:

1.BigPipe可能需要重写Web服务器;它类似Html5的websockets;与其重写Web服务器,不如使用现成Tomcat 7支持comet websockets的servlet3新标准的推送服务器。

2.BigPipe应该是在一个TCP连接中Web服务器进行多次推送(不关闭连接),可惜这个推送过程也是串行的,因为TCP管道本身是一个串行化序列号管道,无论客户端和服务器端两端如何并行,只通过一个TCP连接,这个TCP连接应该就是独木桥。

3.这种方式和使用AJAX,比如LABJS这样延迟加载JS等相比,后者反而更方便,直接使用现在apache等服务器即可,使得Keep alive on即可。

在文章Facebooks BigPipe Done in Java

中看到的Httpserlvet代码没有稀奇,就是使用并发线程池输出pagelet,可以理解在服务器端,页面上的几个窗口portlet或者pagelet输出是并行输出的,可是在向TCP管道写时,也是一个个通过的,所以,这段程序是否可以理解为:对巨大页面分割成多个小页面并行处理,可以提升性能,但是对于中小页面,没有必要。

关于“对巨大页面分割成多个小页面并行处理,可以提升性能”,我理解为这其实是对面向过程程序的一种重构,一个巨大页面相当于一个几千行代码的方法函数,每行都是依次执行,那么我们重构为并行执行;换个思路:如果我们使用对象方法切分这个页面,每一两行代码用一个对象Object来代表,而且这些Object都在内存或缓存中,那么使用AJAX分别对这些OBJECT异步并行调用导出,效率反而高且简单。

在这篇Facebooks BigPipe Done in Java留言中,老外也有人质疑facebook的BigPipe真正意思,也没有看到他们的案例代码,大家都在猜测,我以上也是结合Java新技术进行的猜测。

刚刚看到PHP实现方式:http://www.juhonkoti.net/2010/10/01/open-bigpipe-javascript-implementation

这篇文章对BigPipe解释到位,BigPipe和AJAX区别还是多个http连接和单个http连接,如果你使用ajax首先由服务器简单发出一个布局代码,然后由ajax完成各个部分的再次调用(jdon.com首页就是这么做的),而BigPipe是在一个http连接中完成这些步骤,还是没看出比AJAX有什么好处,减少http的tcp握手时间?这点时间不在乎吧。

[该贴被banq于2011-05-04 18:26修改过]

              

1
huangdehui1989
2012-06-03 14:35
banq 您好 学生想请教你 如何来对研究一门技术的源代码,类多 繁琐 不知道 不知道从何处下手 很希望你能够指导一下 谢谢!!

猜你喜欢