GO日记——fasthttp client为什么快

翻译自 https://weekly-geekly.github.io/articles/443378/index.html

我们使用fasthttp的例子编写了一个高性能的http客户端。Alexander Valyalkin(VertaMedia)
Fasthttp库是标准Golang软件包中net / http的加速替代品。
怎么安排?它为什么这么快?

我是Alexander Valyalkin。我在VertaMedia公司工作。我为我们的需求设计了一个fasthttp。它包括http客户端实现和http服务器实现。Fasthttp的工作速度比标准Go包的net / http快得多。

fasthttp是什么?

在这里插入图片描述
Fasthttp是http服务器和客户端的快速实现。地址:https://github.com/valyala/fasthttp

性能压测

在这里插入图片描述
我想很多人都听说过fasthttp服务器,它非常快。但很少有人听说过fasthttp客户端。Fasthttp服务器参与了techempower基准测试 - 一个用于http服务器着名基准测试。Fasthttp服务器参与第12轮和第13轮。第13轮尚未出现(2016年 - Ed。)。
在这里插入图片描述
第12轮测试的结果之一,其中fasthttp几乎位于顶部。这些数字显示了他在给定测试中每秒发出的请求数。在此测试中,请求提供给hello world的页面。fasthttp返回hello world的页面非常快。
在这里插入图片描述
下一轮的初步结果尚未公布(2016年 - 编辑)。4个fasthttp实现占据了基准测试的第一个位置,它不仅提供了hello world的返回,而且可以根据模板形成了一个html页面。

Fasthttp server性能很强,那么Fasthttp client呢?

关于fasthttp客户端,很少有人知道。但事实上,他也很酷。在本报告中,我将向您介绍fasthttp客户端的内部结构及其开发原因。
在这里插入图片描述
实际上,fasthttp中有几个客户端:Client,HostClient和PipelineClient。然后我会告诉你更多关于它们的信息。

fasthttp.Client

在这里插入图片描述
Fasthttp.Client是典型的通用http客户端。有了它,您可以向任何Internet站点发出请求,获得响应。它的特点:它工作得很快,你可以限制每个主机的开放连接数,这与net / http包不同。该文档位于https://godoc.org/github.com/valyala/fasthttp#Client。

fasthttp.HostClient

在这里插入图片描述
Fasthttp.HostClient是一个专门的客户端,只与一台服务器通信。它通常用于访问HTTP API:REST API,JSON API。它还可用于代理从Internet到多个服务器上的内部DataCenter的流量。文档在这里:https://godoc.org/github.com/valyala/fasthttp#HostClient

就像Fasthttp.Client一样,使用Fasthttp.HostClient,您可以限制每个后端服务器的打开连接数。net / http中不存在此功能,并且free nginx中也不存在此功能。据我所知,此功能仅适用于付费的nginx。

fasthttp.PipelineClient

在这里插入图片描述
Fasthttp.PipelineClient是一个专用客户端,允许您管理服务器或有限数量的服务器的管道请求。它可以用于通过HTTP协议访问API,您需要尽可能快地执行大量请求。Fasthttp.PipelineClient的限制是它可能遭受Head of Line阻塞。这是我们向服务器发送许多请求而不等待对每个请求的响应的时候。某些请求的服务器被阻止。因此,在他之后的所有其他请求将等到此服务器处理慢速请求。只有在您确定服务器会立即响应您的请求时,才应使用Fas

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值