GO框架三件套 | 青训营笔记

85 阅读2分钟

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

一、介绍

  • Gorm:Gorm是一个已经迭代了10年+的功能强大的ORM框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展
  • Kitex:Kitex是字节内部的Golang微服务RPC框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源扩展
  • Hertz:Hertz是字节内部的HTTP框架,参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高扩展性特点

二、三件套的使用

(一)gorm

1、Gorm基本使用

  • Gorm使用名为ID的字段作为主键
  • 使用结构体的蛇形复数作为表名
  • 字段名的蛇形作为列名

2、支持的数据库

gorm目前支持MySQL、SQLServer、PostgreSQL、SQLite

3、事务

gorm提供了begin、commit、rollback方法用于使用事务

  • begin:开始事务
  • commit:提交事务
  • rollback:回滚事务
  • transaction:自动提交事务

4、hook

hook是在创建、查询、更新、删除等操作之前、之后自动调用的函数

  • 如果任何hook返回错误,gorm将停止后续的操作并回滚事务

5、gorm性能提高

对于写操作,为了确保数据的完整性,gorm会将它们封装在事务内运行,但这会降低性能,可以使用SkipDefaultTransaction关闭默认事务

(二)kitex

kitex目前不支持windows系统,推荐使用linux

1、IDL

IDL用来定义服务与接口,如果要进行RPC,就需要知道接口、参数、返回值,IDL可以完成这些工作

2、kitex生成代码

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

(三)hertz

1、基本使用

Hertz是一个Golang微服务HTTP框架,在设计之初参考了其他开源框架的优势,并结合内部的需求,使其具有高易用性、高性能、高扩展性等特点

2、hertz路由

  • hertz提供了路由组的能力,用于支持路由分组的功能
  • hertz提供了参数路由和通配路由,路由的优先级为:静态路由 > 命名路由 > 通配路由