day4后端与Go框架三件套 | 青训营笔记

101 阅读2分钟

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

主要是学习了Go框架三件套Gorm、Kitex、Hertz,理解了三者的主要操作和功能。

  • Gorm - ORM框架
  • Kitex - Golang微服务RPC框架
  • Hertz - HTTP框架

一、Grom

DB操作

创建数据

Upsert - clause.OnConflict 处理数据冲突

default 定义默认值

查询数据

First 查询不到会返回错误,而find不会

更新数据

Struct 只能更新非零值,可以使用Map或Select更新零值

删除数据

物理 Delete & 软 gorm.DeletedAt

Unscoped可以查询到被软删的数据

事务

Begin、Commit、Rollback

Hook

性能提高

SkipDefaultTransaction、PrepareStmt

二、Kitex

代码生成工具

IDL定义服务与接口

服务注册与发现

三、Hertz

基本操作

路由(静态>命名>通配)

客户端&服务端中间件

问:如何终止中间件的执行?

  • c.Abort
  • c.AbortWithMsg
  • c.AbortWithStats

IDL

为用户提供了HTTP Client 用于帮助用户发送HTTP请求

性能:网络库Netpoll、Json编解码Sonic、sync.Pool复用对象

实战

笔记项目是利用Go框架三件套搭建起来的后端API项目

api:

用户登录、注册,用户创建、更新、删除、查询笔记;

user:

创建、查询、校验用户;

note:

创建、更新、删除、查询笔记;

调用关系是:

调用方 通过 HTTP 调用api

api 根据

  • 操作用户数据proto - user 或 操作笔记数据thrift - note 进行服务注册 - 进而调用 mySQL
  • 或 直接服务发现

到达 ETCD

作业

阅读官方问答熟悉更多用法:

CloudWeGo

在本地运行笔记项目,思考在之后的大项目中使用Go框架三件套Gorm/Kitex/Hertz

思考:大项目是完成极简版的抖音,首先要像笔记项目确定有哪些API服务,user基本相同,视频包括收藏、点赞、评论是属于另一类的api,可以取名audience;然后定义IDL,再实现数据管理。