加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

超高性能管线式HTTP请求(实践·原理·实现)

发布时间:2019-03-27 23:11:14 所属栏目:教程 来源:lulianqi15
导读:副标题#e# 这里的高性能指的就是网卡有多快请求发送就能有多快,基本上一般的服务器在一台客户端的压力下就会出现明显延时。 该篇实际是介绍pipe管线的原理,下面主要通过其高性能的测试实践,解析背后数据流量及原理。最后附带一个简单的实现。 实践 先直

pipe (管线式)正是回避了上面的问题,他不需要等回复达到即可直接发送(事实上http1.1协议也从来没有讲过必须要等response到达后客户端才能发送下一个请求,只是为了方便应用层业务实现,一般的http库都是这样实现的,而现在看到的绝大多少http服务器都是默认支持pipe的),这样发送与接收即可以分离开来(如下图):

超高性能管线式HTTP请求(实践·原理·实现)

在事实情况下,发生可能会比这个图表现的更快,请求1,2,3,4很可能被放到一个tcp包里被一次性全部发出去(这种模式也给部分应用带来了麻烦,后面会讲到)。

超高性能管线式HTTP请求(实践·原理·实现)

对于pipe相对真实的情况如上图,多个请求会被打包在一起被发送,甚至有时是所有request发送完成后,服务器才开始回复第一个response。

超高性能管线式HTTP请求(实践·原理·实现)

而普通的keepalive的模式如上图,一条线代表一个请求,不仅一次只能发送一个,而且必须等待回复后才能发下一个。

下面看下实际测试中pipe的模式具体是什么模样的。

超高性能管线式HTTP请求(实践·原理·实现)

可以看到握手完成后(实际上握手时间也不长只用了4ms),随后即直接开始了request的发送,可以看到后面的一个tcp包里直接包含了完整的12个请求。在没有收到任何一个回复的情况下,就可以把所有要发送的请求提前全部发出(服务器已经关闭了Nagle算法)。

超高性能管线式HTTP请求(实践·原理·实现)

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读