Go三件套 | 青训营笔记

88 阅读2分钟

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

一、本堂课重点内容:

1.三件套(Gorm、Kitx、Hertz)的基本用法与常见API讲解 2.实战项目介绍、实战项目功能介绍、实战项目关键代码讲解

二、详细知识点介绍:

Gorm

一个已经迭代了10年+的功能强大的ORM框架,拥有非常丰富的开源拓展。

Kitex

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

Hertz

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

GORM使用

昨天寄过了。

Kitex使用

Kitex安装

image.png

定义IDL

image.png

Kitex生成代码

image.png

使用kitex -module example -service example echo.thrift生成代码
build.sh生成脚本
kitex_gen:IDL内容相关的生成代码,主要是基础的Server/Client代码
main.go 程序入口
handler.go 用户在该文件里实现IDL service定义的方法

Kitex Client发起请求

创建Client

image.png 发起请求

image.png

Kitex服务注册与发现

目前,Kiex的服务注册与发现已经对接了主流服务注册与发现中心,如ETCD,Nacos等。

Hertz基本使用

image.png 使用Hertz实现,服务监听8080端口并注册了一个GET方法的路由函数。

Hertz路由

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

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

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

Hertz参数绑定

Hertz提供了Bind、Validate、BindAndValidate函数用于进行参数绑定和校验

image.png

Hertz中间件

Hertz的中间件主要分为客户端中间件与服务端中间件,如下展示了一个服务端中间件

image.png

Hertz Client

Hertz提供了HTTP Client用于帮助用户发送HTTP请求

image.png

Hertz代码生成工具

目录结构

image.png

生成文件

image.png

Hertz性能

1.网络库Netpoll 2.Json解编码Sonic 3.使用sync.Pool复用对象协议层数据解析优化

Hertz生态

image.png

三、实践练习例子:

本次课程的实战练习例子是一个笔记项目
使用Hertz、Kitex、Gorm搭建出来的具有一定业务逻辑的后端API项目

image.png

调用关系

image.png

IDL介绍

image.png

image.png

技术栈介绍

image.png

通过本次实践例子练习,很好的理解了后端的业务逻辑并且一定的学会使用了课堂所教的三个框架。

四、课后个人总结:

由于没学过微服务,中间件等。像Kitex和Hertz这样的框架,我是第一次接触,对于有些地方不是很理解。而且上手的时候,不太会用。需要去好好了解概念并看文档。

五、引用参考:

全为课程内容