Go框架三件套(Web/RPC/ORM)| 青训营笔记

138 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第5天

Grom

Grom是一个迭代10年+的功能强大的ORM框架,在字节内部被广泛使用并拥有非常丰富的开源扩展

官方文档

天生防SQL注入的

  1. 定义gorm model,对应表的字段
  2. 实现结构体吧的Gorm提供的接口函数TableName(),返回表名
  3. 连接数据库
  4. 创建数据 db.Create()
  5. 查询数据 First()只能查询一条数据;Find()查询多条数据。
  6. 结构体更新数值仅更新非0值。

CRUD

事务

开启事务,注意从tx := db.Begin()开始使用tx,而不是db。tx是db从链接池里面返回固化的链接,保证事务操作同一个链接。

避免忘记写Rollback(),自动提交事务。

Hook(钩子)

性能提高

  1. 关闭默认事务

  2. 缓存预编译语句

生态

reference

blog.csdn.net/qq_42956653…

blog.csdn.net/yoyogu/arti…

Kitex

Kitex是字节内部的Golang微服务RPC框架,具有高性能、强扩展的主要特点,Hi吃多协议并且拥有丰富的开源扩展。

go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
go install github.com/cloudwego/thriftgo@latest
# 查看版本,如果not found,记得将GoPath/bin加入到PATH,如果已添加,source ~/.zshrc
kitex --version

reference

cloud.tencent.com/developer/a…

mp.weixin.qq.com/s?__biz=MzA…

juejin.cn/post/709986…

Hertz

Hertz是字节内部的HTTP框架,参考了其他开源框架的优势,结合字节内部需求,具有高易用性、高性能、高扩展特点。

  • 注册路由

  • 路由分组

  • 路由优先级

  • 参数绑定

  • 中间件

  • HTTP Client可以发起HTTP请求

  • 生成代码框架

生态