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

134 阅读3分钟

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

一、本堂课重点内容

Go框架三件套

  • Gorm
  • Kitex
  • Hertz

二、详细知识点介绍

1.Gorm

是一个已经迭代了10年+的功能强大的ORM框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展。Gorm使用名为ID的字段作为主键使用结构体的蛇形负数作为表名,字段名的蛇形作为列名,使用CreatedAt、UpdaredAt字段作为创建、更新时间。使用clause.OnConflict处理数据冲突。

Gorm查询数据:使用结构体作为查询条件时,GORM只会查询非零字段。这意味着如果您的字段为0、“、false或其他零值”,该字段不会被用于构建查询条件,使用Map来构建查询条件。

Gorm更新数据:使用Struct更新时,只会更新非零值,如果需要更新零值可以使用Map更新或者使用Select选择字段。

Gorm删除数据:Gom提供了gorm.DeletedAt用于帮助用户实现软删。

Gorm事务:Gorm提供了Begin、Commit、Rollback方法用于使用事物。

Gorm Hook:Gorm在提供了CURD的Hook能力是在创建、查询、更新、删除等操作之前、之后自动调用的函数。

Gorm生态:Gorm拥有非常丰富的扩展生态--Gorm的文档(gorm.cn

2.Kitex

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

安装Kitex代码生成工具

go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
go install github.com/cloudwego/thriftgo@latest

定义:使用IDL定义服务与接口,如果我们要进行RPC,就需要知道对方的接口是什么,需要传什么参数,同时也需要知道返回值是什么样的。

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

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

3.Hertz

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

Hertz基本使用:使用Hertz实现,服务监听8080端口并注册了一个GET方法的路由函数。

Hertz路由:Hertz提供了参数路由和通配路由,路由的优先级为:静态路由>命名路由>通配路由。

Hertz参数绑定:Hertz提供了Bind、Validate、BindAndVali'da'te函数用于进行参数绑定和校验。

Hertz中间件:Hertz的中间件主要分为客户端中间件与服务端中间件,如下展示一个服务端中间件。

Hertz Clinet:Hertz提供了HTTP Clinet用于帮助用户发送HTTP请求。

Hertz性能:网络库Netpoll、Json编解码Sonic、使用sync.Pool复用对象协议层数据解析优化。

Hertz生态:Hertz拥有非常丰富的扩展生态--Gorm的文档(github.com/cloudwego/h…)。

2.Kitex

三、课后个人总结

在学习GoWeb的三大件Gorm,Kitex,Hertz,了解到许多关于Go在在实战的基本用法,并且通过课堂上的笔记项目了解到Go语言的项目流程,今天也是收获满满的一天,希望在后期的学习中继续加油!