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…

  1. 首先安装命令行工具hz:go install github.com/cloudwego/hertz/cmd/hz@latest
  2. 生成代码 hz new -module github.com/cloudwego/hertz-examples
  3. 整理 & 拉取依赖 go mod tidy
  4. 编译并启动 go build -o hertz_demo && ./hertz_demo

RPC 框架 Kitex 初体验

通过阅读 www.cloudwego.io/zh/docs/kit… 尝试运行 Kitex 的示例代码(KItex 框架地址: github.com/cloudwego/k…

  1. 安装 kitex:go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
  2. 安装 thriftgo:go install github.com/cloudwego/thriftgo@latest
  3. 克隆该示例仓库到本地 git clone https://github.com/cloudwego/kitex-examples.git
  4. 进入示例仓库的 hello 目录 cd kitex-examples/hello
  5. 运行 server go run .
  6. 运行 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…
    • 接口描述语言 (Interface description language,缩写 IDL ),是用来描述软件组件介面 “介面 (程式设计)”)的一种计算机语言。IDL通过一种独立于编程语言的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流;比如,一个组件用C++写成,另一个组件用Java写成。
    • IDL通常用于远程调用软件。在这种情况下,一般是由远程客户终端调用不同操作系统上的对象组件,并且这些对象组件可能是由不同计算机语言编写的。IDL建立起了两个不同操作系统间通信的桥梁。
  • Thrift IDL 语法 thrift.apache.org/docs/idl
  • proto3 IDL 语法 developers.google.com/protocol-bu…

课程笔记

直播链接:https://live.juejin.cn/4354/9899243

课程目标

  1. 将前面几节课所学到的知识应用到项目中。
  2. 掌握 Hertz/Kitex/Gorm 的基本用法。
  3. 通过学习实战案例,可以使用 Hertz/Kitex/Gorm 完成日常后端开发任务

三件套介绍

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

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

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

Gorm的基本使用

CRUD

pS1dwvD.pngpS1wJsg.pngpS10Mm4.pngpS10sht.pngpS1bm36.png

其他操作

pS1bDEj.pngpS1bo5R.pngpS1bb26.pngpS1qixf.png

Gorm拥有丰富的扩展生态,可以使用代码生成工具、分片库方案、手动索引、乐观锁、读写分离、OpenTelemetry 扩展等等

Kitex

Hertz


Go 框架三件套详解(Web/RPC/ORM)
https://zhangzhao219.github.io/2023/01/17/ByteDanceYouthTrainCamp/ByteDanceYouthTrainCamp-Day03/
作者
Zhang Zhao
发布于
2023年1月17日
许可协议