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

116 阅读1分钟

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

课程 PPT:飞书 - 登录

Gorm

ORM 框架 updates 更新非零值(非人为初始化的默认值)需要使用结构体的 map 模型定义 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 连接数据库用到 DSN:ppt 更多使用 Find, 因为 First 找不到的时候会返回错误,如果找不到返回空数组

表达式更新(高级用法):ppt SQL 表达式更新

  • 物理删除:
  • 软删除:结构体增加一个 gorm. DeletedAt 字段

可防 SQL 注入

要固化链接,db. Begin () 。因为 golang 使用链接池

推荐 transaction 避免漏写 commit、rollback

Hook 操作很有用

性能提高可以使用的 2 个方法

悲观锁 redis, 乐观锁 gorm 提供了

链接状态,时长,可使用 OpenTelemetry 扩展

Kitex

RPC 框架

handler. go 写 IDL 的 Echo 内容

MVC :软工中模型分层架构

log. Fatal (err) 程序退出,不往下走了

扩展

  • XDS:多流量路由、多泳道、多环境(多个测试环境)
  • opentelemetry:可观测性

Hertz

HTTP 框架(赫兹) 分了 2 个 ctx 上下文

h.Use () 注册中间件

全局中间件和路由组中间件的区别:提示考虑 404 请求

dst:结构体复用-->为了高性能

biz:

  • handler 函数逻辑
  • model:IDL 部分
  • router:路由注册等

什么场景用什么网络库,看文档 Hertz 支持切换网络标准库

实战案例

推荐看 biz_examples github

mux 连接复用