Go 框架三件套详解(Web/RPC/ORM)
Go 框架三件套详解(Web/RPC/ORM)
Go 框架三件套详解(Web/RPC/ORM)
环境搭建部分
搭建课程所需要的开发环境以及安装需要用到的软件。
学习如何安装 Docker/Postman/Git/Golang
- 安装 Minikube 或 Docker Desktop 用于使用 Docker 安装教程
- 可以使用 Minikube 或者使用 Docker Desktop 启动 Docker
- 安装 Postman(使用更新的Apifox替代)
- 安装 Git 安装教程
- 安装 Go(Golang >= 1.15) 安装教程
框架体验部分
提前体验一下课程涉及的 HTTP/RPC/ORM 框架
HTTP 框架 Hertz 初体验
通过阅读 www.cloudwego.io/zh/docs/her… 尝试运行 Hertz 的示例代码(Hertz 框架地址: github.com/cloudwego/h…)
- 首先安装命令行工具hz:
go install github.com/cloudwego/hertz/cmd/hz@latest
- 生成代码
hz new -module github.com/cloudwego/hertz-examples
- 整理 & 拉取依赖
go mod tidy
- 编译并启动
go build -o hertz_demo && ./hertz_demo
RPC 框架 Kitex 初体验
通过阅读 www.cloudwego.io/zh/docs/kit… 尝试运行 Kitex 的示例代码(KItex 框架地址: github.com/cloudwego/k…)
- 安装 kitex:
go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
- 安装 thriftgo:
go install github.com/cloudwego/thriftgo@latest
- 克隆该示例仓库到本地
git clone https://github.com/cloudwego/kitex-examples.git
- 进入示例仓库的
hello
目录cd kitex-examples/hello
- 运行 server
go run .
- 运行 client 另起一个终端后,
go run ./client
ORM 框架 Gorm 初体验
通过阅读 gorm.cn/docs/#Insta… 尝试运行 Gorm 的示例代码(Gorm 框架地址: github.com/go-gorm/gor…)
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite
其它知识
- 了解一下什么IDL以及IDL的语法
- 了解一下什么是 opentracing 以及 etcd
Etcd 与 Opentracing 是什么
- 了解 etcd 是什么 参考文档
- etcd是一种高度一致的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。它可以在网络分区期间优雅地处理领导人选举,并且可以容忍机器故障,即使在领导人节点中也是如此。
- 了解 opentracing 是什么 参考文档
- OpenTracing是一种分布式系统链路跟踪的设计原则、规范、标准。
IDL 是什么
- 了解 IDL 是什么 zh.m.wikipedia.org/zh-hans/%E6…
- Thrift IDL 语法 thrift.apache.org/docs/idl
- proto3 IDL 语法 developers.google.com/protocol-bu…
课程笔记
直播链接:https://live.juejin.cn/4354/9899243
课程目标
- 将前面几节课所学到的知识应用到项目中。
- 掌握 Hertz/Kitex/Gorm 的基本用法。
- 通过学习实战案例,可以使用 Hertz/Kitex/Gorm 完成日常后端开发任务
三件套介绍
Gorm是一个已经迭代了10年+的功能强大的ORM框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展。
Kitex是字节内部的Golang微服务RPC框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源扩展。
Hertz是字节内部的HTTP框架,参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高扩展性特点。
Gorm的基本使用
CRUD
其他操作
Gorm拥有丰富的扩展生态,可以使用代码生成工具、分片库方案、手动索引、乐观锁、读写分离、OpenTelemetry 扩展等等
Kitex
Hertz
Go 框架三件套详解(Web/RPC/ORM)
https://zhangzhao219.github.io/2023/01/17/ByteDanceYouthTrainCamp/ByteDanceYouthTrainCamp-Day03/