这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
ORM 框架——GORM
简介
Gorm 是一个已经迭代了十余年的功能强大的 ORM 框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展。
ORM 框架 Gorm 初体验
通过阅读 gorm.cn/docs/#Insta… 尝试运行 Gorm 的示例代码
- Gorm 框架地址: github.com/go-gorm/gor…
Gorm基本使用
-
Gorm的约定
- Gorm使用名为ID的字段 作为主键
- 使用结构体的 蛇形负数作为表名
- 字段名的蛇形作为列名
- 使用CreatedAt、UpdatedAt字段作为创建、更新时间
-
Gorm支持MySQL、SQLServer、PostgreSQL、SQLite,同时支持复用、自行开发其他类型数据库的驱动。
-
Gorm提供Begin、Commit、Rollback方法用于使用事务,同时提供Transaction方法用于自动提交事务,避免用户漏写Commit、Rollback
-
Gorm提供了CRUD的Hook能力
- Hook 是在创建、查询更新、删除等操作之前、之后自动调用的函数
- 如果任何Hook返回错误,Gorm将停止后续的操作并回滚事务
-
对于写操作,Gorm会将它们封装在事务内运行。但该操作会降低性能,此时可以使用SkipDefaultTracsaction关闭默认事务。
-
使用PrepareStmt缓存预编译语句可以提高后续调用的速度
-
Gorm生态
RPC 框架——Kitex
简介
Kitex 是字节内部的 Golang 微服务 RPC 框架,具有高性能、墙可扩展的主要特点,支持多协议并且拥有丰富的开源扩展。
RPC 框架 Kitex 初体验
通过阅读 www.cloudwego.io/zh/docs/kit… 尝试运行 Kitex 的示例代码
- kitex 暂时没有针对 Windows 做支持,如果本地开发环境是 Windows 建议使用 WSL2
- KItex 框架地址: github.com/cloudwego/k…
IDL
- IDL是什么
接口描述语言(Interface description language,缩写IDL),是用来描述软件组件介面的一种计算机语言。IDL通过一种独立于编程语言的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流;比如,一个组件用C++写成,另一个组件用Java写成。
IDL通常用于远程调用软件。在这种情况下,一般是由远程客户终端调用不同操作系统上的对象组件,并且这些对象组件可能是由不同计算机语言编写的。IDL建立起了两个不同操作系统间通信的桥梁。
在IDL基础上开发出来的软件系统有Sun的ONC RPC,The Open Group的分散式运算环境,IBM的系统物件模型(英语:System Object Model),Object Management Group的CORBA,和SOAP(用于Web service)。
-
使用IDL定义服务与接口
-
使用kitex -module example -service example echo.thrift 命令生成代码
-
Kitex生态
HTTP 框架——Hertz
简介
Hertz 是字节内部的 HTTP 框架,参考了其他开源框架的优势,结合字节跳动公司的内部需求,具有高易用、高性能、高扩展性的特点
HTTP 框架 Hertz 初体验
通过阅读 www.cloudwego.io/zh/docs/her… 尝试运行 Hertz 的示例代码
- Hertz 框架地址: github.com/cloudwego/h…
Hertz路由
-
Hertz提供了GET、POST、PUT、DELETE、ANY等方法注册路由
-
提供了路由组(Group)的能力,用于支持路由分组的功能