最近使用go开发一些高并发的接口,大家都推荐用gin,但是发现fasthttp性能很高,用哪一个比较好呢?
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
fasthttp不是真仙降世, 异乎寻常的快速是有代价的. 看一下这篇文章. https://cloud.tencent.com/developer/news/462918 老老实实用你的gin吧.正常使用也够了
貌似 好多框架 都是基于这个 fasthttp 开发的 要有这个bug 那不是完犊子了
gin就很好
哈哈哈, 你还别说我还真遇到过这个问题, 完犊子谈不上, 只是如果不稳定的版本放出来就会出现了.重用request是快, 但是遇到坑你就要吐了.我之前用的框架号称最快的iris就有这个问题, 后来换成gin就祝你平安了.
感觉这也不是fasthttp的问题,也不是sync.Pool的锅,就是没有用好sync.Pool而导致的并发安全问题,gin的 gin.Context 也是使用的sync.Pool, 请查看: https://github.com/gin-gonic/gin/blob/master/gin.go#L371 。fasthttp会发生,那么gin也避免不了。上一次的请求响应都结束了,fasthttp都已经把这个Ctx归还到pool里面了,而上一个请求响应创建的协程还在持有着已经归还的Ctx,就算不是 fasthttp,sync.Pool 这样用也很不规范
`单行代码`
fasthttp不是真仙降世, 异乎寻常的快速是有代价的. 看一下这篇文章. https://cloud.tencent.com/developer/news/462918 老老实实用你的gin吧.正常使用也够了
貌似 好多框架 都是基于这个 fasthttp 开发的 要有这个bug 那不是完犊子了
gin就很好
哈哈哈, 你还别说我还真遇到过这个问题, 完犊子谈不上, 只是如果不稳定的版本放出来就会出现了.重用request是快, 但是遇到坑你就要吐了.我之前用的框架号称最快的iris就有这个问题, 后来换成gin就祝你平安了.
感觉这也不是fasthttp的问题,也不是sync.Pool的锅,就是没有用好sync.Pool而导致的并发安全问题,gin的 gin.Context 也是使用的sync.Pool, 请查看: https://github.com/gin-gonic/gin/blob/master/gin.go#L371 。fasthttp会发生,那么gin也避免不了。上一次的请求响应都结束了,fasthttp都已经把这个Ctx归还到pool里面了,而上一个请求响应创建的协程还在持有着已经归还的Ctx,就算不是 fasthttp,sync.Pool 这样用也很不规范