Go框架三件套 | 青训营笔记

93 阅读2分钟

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

课堂内容

Go框架三件套(Web/RPC/ORM)

  • Gorm:是一个迭代10年+的功能强大的ORM框架。
  • Kitex:是字节内部的golang微服务RPC框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源拓展。
  • Hertz:是字节内部的HTTP框架,参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高拓展性特点。

Gorm

基本操作

  • 定义gorm model
  • 为model定义表名
  • 连接数据库
  • 创建数据
  • 查询数据
  • 更新数据
  • 删除数据

支持的数据库

Gorm目前支持MySQL、SQLServer、PostgreSQL;

Gorm通过驱动来连接数据库,如果需要连接其它数据库,可自行开发驱动

Gorm 创建数据

Upsert的用法;

默认值的用法

Gorm 查询数据

Gorm 更新数据

Gorm 删除数据

  • 物理删除
  • 软删除

Gorm 事务

  • Grom 的Begin、Commit、Rollback方法用于使用事务
  • Grom 的Tansaction 方法用于自动提交事务,避免用户漏写Commit、Rollback

Gorm Hook

  • Gorm 在提供了CURD的 Hook 能力
  • Hook是在创建、查询、更新、删除等操作之前、之后自动调用的函数
  • 如果任何Hook返回错误,Gorm将停止后续的操作并回滚事务。

Kitex

安装Kitex代码生成工具

定义IDL

使用IDL定义服务与接口

Kitex生成代码

使用 kitex -module example -service example echo.thrift 命令生成代码

Kitex 基本使用

服务默认监听8888端口

Kitex Client 发起请求

创建Client、发起请求

Kitex 服务注册

Kitex的服务注册与发现已经对接了主流的服务注册与发现中心,如ETCD,Nacos等

Hertz

基本使用

Hertz 路由

  • Hertz提供了GET、POST、PUT、DELETE、ANY等方法用于注册路由
  • Hertz提供了路由器(Group)的能力,用于支持路由分组的功能。
  • Hertz提供了参数路径和通配路由,路由的优先级为:静态路由 > 命名路由 > 通配路由

参数绑定

Hertz 提供了Bind、Validate、BindAndValidate函数用于进行参数绑定和校验

中间件

Hertz的中间件主要分为客户端中间件和服务端中间件