后端基础第五天 | 青训营笔记

73 阅读2分钟

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

第五天

Go框架三件套详解(Web/RPC/ORM)

字节内部三件套

  • Gorm

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

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

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

Gorm

image-20230120162210039

  • Gorm目前支持 MySQL SQLServer PostgreSQL SQLite

连接数据库

image-20230120163038363

  • Gorm通过驱动来连接数据库,如果需要连接其它类型的数据库,可以复用/自行开发驱动

MySQLDSN

Gorm创建数据

image-20230120163513077

Gorm查询数据

image-20230120164104041

更新数据

image-20230120164516759

删除数据

image-20230120164535335

Gorm事务

  • Gorm提供了Begin、Commit、Rollback方法用于使用事务

image-20230120165316697

Gorm Hook

image-20230120165729728

Gorm性能提高

image-20230120170016503

Gorm生态

image-20230120170159265

Kitex

  • Kitex目前对Windows的支持不完善,如果本地开发环境是Windows,建议使用虚拟机或WSL2
  • 安装Kitex代码生成工具
go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
go install github.com/cloudwego/thriftgo@latest

定义IDL

image-20230120171000796

Kitex生成代码

image-20230120171214505

Kitex基本使用

服务默认监听 8888 端口

image-20230120171437201

Kitex Client发起请求

image-20230120171532459

Kitex服务注册与发现

image-20230120171804256

image-20230120172047389

Kitex生态

image-20230120172109859

Hertz

image-20230120172134287

Hertz路由

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

image-20230120172303953

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

image-20230120172419968

  • Hertz提供了参数路由和通配路由,路由的优先级为:静态路由 > 命名路由 > 通配路由

image-20230120172618176

参数绑定

  • Hertz提供了 Bind\Validate\BindAndValidate

image-20230120172925424

Hertz中间件

image-20230120173026265

Hertz Client

image-20230120173206435

Hertz代码生成工具

  • Hertz提供了代码生成工具Hz,通过定义IDL(interface description language)文件即可生成对应的基础服务代码

image-20230120173411531

image-20230120173431179

Hertz生态

image-20230120173512527

实战案例

笔记项目是一个使用Hertz Kitex Gorm搭建出来的具备一定业务逻辑的后端API项目

image-20230120173753362

项目功能介绍

image-20230120173819446

项目调用关系

image-20230120173847838

IDL介绍

直接去地址看

项目技术栈

image-20230120174210012