fasthttp是一个用于Go语言的Http框架,以及原生的比起来,它的特征便是快,比net/http快10倍以上。外部少量应用了sync.Pool,为屡次应用的变量节减了少量的内存申请开销,为每一台物理效劳器上高出150万个并发的保持连接供应200K rps的效劳。
罕见问题
为甚么要建立另一个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
文章转载或复制请以超链接形式并注明出处磁力引擎导航网
还没有评论,来说两句吧...