golang 数据库框架
我已经将Go投入生产已经有一段时间了,非常享受它的快速和可靠。 较小的构建体大小,go例程提供的并发性以及您可以直接在机器上运行构建体的事实使Golang变得非常可爱。
标准软件包的性能如此之好,以至于您可以创建可用于生产环境的微服务,而无需任何外部库或框架。 但这并不意味着Go中没有提供更大灵活性或更快速度的框架,它们根本不是首选。
如果您向Go开发人员询问可以使用哪些Web框架或库,通常的答案是坚持使用标准库。 具有讽刺意味的是,“ golang框架”在google中的搜索结果最高是关于为什么不应该使用它们的原因。

我对标准库的替代方案进行了一些研究,以了解它们的性能并对其进行基准测试。 我将它们归类为微服务的基本组成部分。
1s10s
路由
标准的http Go服务器提供了一个不错的路由器,该路由器可以读取查询参数,但无法读取命名参数,例如,
任何具有上述嵌套资源的REST服务都必须已经使用外部路由库来解析它们。 杜松子酒,回音,比戈,大猩猩混蛋,枸杞是一些受欢迎的食物(根据他们的Github追随者)。
其中一些是功能完善的中间件框架,该框架也可以进行路由,而另一些只是路由库。
我针对这些库针对单个命名参数运行了基准测试,以下是结果。 Gin拥有最快的路由器,其次是Echo。

JSON序列化和反序列化
一旦API请求通过路由器命中并传递到控制器或处理程序,下一步就是在返回响应的同时对请求JSON或Encode进行解码。
encodingjson, XML, csvencoding/json
以下是编码结果,结果表明性能差异不明显。

jsoniter

现在,如果您的请求已解码,则下一步可能是应用您的业务逻辑,并且可能需要执行一些数据库操作。
ORM与否?
大多数流行语言都依赖于框架来构建与数据库交互的微服务。 在Java世界中处于Hibernate状态,Active Record for Rails和Django ORM非常流行。 ORM的(对象关系映射器)有时有助于更好地处理事务,表之间的关系,并有助于避免编写用于简单联接的复杂SQL。
databasestructsqlx
sqlx
database, database + sqlx, gorm , go-pgdatabase, database + sqlx, gorm , go-pggo-pgsqlx

在API调用的每个步骤中,都有更好的框架或外部库,这些框架或外部库将使您的响应速度更快,并提供一定的灵活性。
注意事项
尽管在速度上有一些改进是显而易见的,但仅此一个原因不应成为脱离标准库的原因。 应该考虑诸如测试代码的难易程度,对开源库的长期维护,对团队的学习曲线之类的事情。
echo + jsoniter + go-pgecho + jsoniter + go-pg
请随时分享您对Go库的想法和经验。
golang 数据库框架