这是我参与「第五届青训营 」伴学笔记创作活动的第 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语言的项目流程,今天也是收获满满的一天,希望在后期的学习中继续加油!