fasthttp是一个用于Go语言的Http框架,以及原生的比起来,它的特征便是快,比net/http快10倍以上。外部少量应用了sync.Pool,为屡次应用的变量节减了少量的内存申请开销,为每一台物理效劳器上高出150万个并发的保持连接供应200K rps的效劳。

fasthttp图片1

罕见问题

为甚么要建立另一个http包而不是优化net/http?

因为 net/http API 限制了患上多优化时机。比如说。

net/http 申请工具的寿命不受申请解决器实行时日的限制。以是效劳器必须为每一个申请建立一个新的申请工具,而不是像 fasthttp 那样重复应用现有的工具。

net/http 头信息被存储在 map[string][]string 中。以是效劳器必须剖析所有的头信息,将它们从[]字节转换成字符串,并在调用用户供应的申请解决程序以前将它们放入map中。这所有都需要毋庸要的内存调配,而fasthttp则能够阻挠。

net/http客户端API需要为每一个申请建立一个新的响应工具。

为甚么fasthttp API与net/http不兼容?

因为net/http API限制了患上多优化时机。更多细节见下面的谜底。同时,某些net/http API的整体也是次优的应用形式。

对于比net/http的连接要挟以及fasthttp的连接要挟。

对于比net/http的Request.Body读取以及fasthttp的申请体读取。

为甚么fasthttp不反对于HTTP/2.0以及WebSockets?

HTTP/2.0的反对于正在停止中。WebSockets已经实现为了。第三方也能够应用RequestCtx.Hijack来实现这些好货色。

与fasthttp比拟,net/http是否有已经知的上风?

是的。

net/http 从 go1.6 最先反对于 HTTP/2.0。

net/http的API是稳固的,而fasthttp的API是一直发展的。

net/http 能够解决更多的 HTTP 角落状况。

net/http 应当蕴含更少的 bug,因为它被更多的人应用以及测试。

net/http能够在1.5以上的Go上事件。

为甚么 fasthttp API 偏偏向于返回 []byte 而不是字符串?

因为[]字节到字符串的转换不是收费的 - 它需要内存调配以及复制。如果你喜爱用字符串而不是字节片来事件,能够随便将返回的[]byte效果包装成string()。但请细致,这有非零的开销。

fasthttp反对于哪些GO版本?

Go1.5以上。旧的版本将不被反对于,因为它们的规范包短缺实用的性能。

细致:Go 1.9.7是最老的测试版本。咱们发起你尽快更新。从1.11.3最先,咱们将放弃对于1.9.x的反对于。

请供应真正的基准数据以及效劳器信息

请看这个问题。

是否有设想向fasthttp增添申请路由?

不设想将申请路由增添到fasthttp中。应用第三方路由器以及反对于fasthttp的web框架。

fasthttp-routing

路由器

框架

lu

阿特雷戈

光纤

齿轮箱

更多信息请拜见此问题。

我在fasthttp中检测到了数据比赛!

酷! 归档一个同伴。然而在如许做以前,请在你的代码中检察下列内容。

确保从RequestHandler前往后不对于RequestCtx或者其成员的援用。

确保在从RequestHandler返回以前调用TimeoutError,如果有对于RequestCtx或者其成员的援用,这能够会被其余goroutine访问。

我在这里不找到我的问题的谜底

试着探索一下这些问题。

更新日志

620f0c8 增加阁下件配置自界说短途所在的选项(#1009)(Lauris BH)。

894272e 修复golangci-lint动作(#1010)(Lauris BH)。

文章版权及转载声明:

作者:Admin本文地址:https://360admin.cn/fasthttp-kuai-su-http-bao--guan-fang-ban-v1240.html发布于 2021-05-12
文章转载或复制请以超链接形式并注明出处磁力引擎导航网

我猜这是你最想看到的: