Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
分布式架构
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
ChatGPT
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
GitHub工具
更多话题
"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修改过]
huangdehui1989
2012-06-03 14:35
banq 您好 学生想请教你 如何来对研究一门技术的源代码,类多 繁琐 不知道 不知道从何处下手 很希望你能够指导一下 谢谢!!
html5编程
并发编程
ajax