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

67 阅读2分钟

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

今天课程的主要内容如下:

image.png

1、主要内容

1.1 框架介绍

image.png Gorm是一个已经迭代了10年+的功能强大的ORM框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展。

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

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

1.2 Gorm

1.2.1 基本使用

Gorm的约定(默认)

Gorm使用名为ID的字段作为主键

使用结构体的蛇形负数作为表名

字段名的蛇形作为列名

使用CreatedAt、UpdatedAt字段作为创建、更新时间

GORM目前支持MySQL、SQLServer、 PostgreSQL、 sQLite.

1.2.2 查询数据

First的使用踩坑使用First时,需要注意查询不到数据 会返回ErrRecordNotFound.

使用Find查询多条数据,查询不到数据不会返回错误。

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

1.3 Kitex

Kitex目前对Windows的支持不完善,如果本地开发环境是Windows的同学建议使用虚拟机或WSL2。

使用IDL定义服务与接口 如果我们要进行RPC,就需要知道对方的接口是什么,需要传什么参数,同时也需要知道返回值是什么样的。这时候,就需要通过IDL来约定双方的协议,就像在写代码的时候需要调用某个函数,我们要知道函数签名-样。

1.4 Hertz

Hertz提供了GET、POST、 PUT、DELETE、ANY 等方法用于注册路由。

Hertz提供了路由组( Group )的能力,用于支持路由分组的功能

2、 部署官方提供的大项目demo

image.png 这过程也遇到了一些问题,记录一下:

  1. 极简抖音App中是双击我的才能打开高级设置,我单击了半天。
  2. 服务端demo需要同时运行两个go文件,因为main依赖于另一个文件。

3、总结

今天的收获也不少,学习了三个框架,为以后做项目打下了坚实的基础。

另外将官方提供的demo运行了一遍,对大项目有了一定的了解。