GO框架三件套(Web/RPC/ORM)|青训营

95 阅读2分钟

三件套介绍

Gorm

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

Kitex

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

Hertz

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

Gorm

GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.

  • Gorm 的约定
    1、Gorm 使用名为 ID 的字段作为主键
    2、如果没有定义 TableName() 方法,使用结构体的蛇形复数作为表名
    3、列名为字段名的蛇形小写
    4、使用 CreatedAt、UpdatedAt 字段作为创建、更新时间。
  • Gorm 的基本操作
    创新,查询,更新,删除等等
  • Gorm 支持的数据库
    Gorm 目前支持 MySQL、SQLServer、PostgreSQL、SQLite。Gorm 通过驱动来连接数据库,如果需要连接其它类型的数据库,可以复用/自行开发驱动。
  • Gorm 事务
    Gorm 提供了 Begin、Commit、Rollback 方法用于使用事务。
  • Gorm 扩展生态、 image.png

Kitex

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

  • 使用 IDL 定义服务与接口 image.png
  • Kitex 服务注册与发现
    目前 Kitex 的服务注册与发现已经对接了主流了服务注册与发现中心,如 ETCD,Nacos 等。
  • Kitex 生态 image.png

Hertz

  • Hertz 基本使用 image.png
  • Hertz 路由
    1、提供了 GET、POST、PUT、DELETE、ANY 等方法用于注册路由。
    2、提供了路由组(Group)的能力,用于支持路由分组的功能,同时中间件也可以注册到路由组上。
    3、提供了参数路由和通配路由,路由的优先级为:静态路由>命名路由>通配路由。
  • Hertz 参数
    提供了 Bind、Validate、BindAndValidate 函数用于进行参数绑定和校验。
  • Hertz 中间件
    主要分为客户端中间件与服务端中间件。
  • Hertz Client
    提供了 HTTP Client 用于帮助用户发送 HTTP 请求。 Hertz 代码生成工具 Hz 通过定义 IDL(inteface description language) 文件即可生成对应的基础服务代码。
  • Hertz生态 image.png