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

99 阅读2分钟

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

1.Gorm

Gorm基本使用

首先会定义一个结构体(一张数据表),结构体中的变量就是表中的字段

image.png

Grom目前支持MySQL、SQLServer、PostgreSQL、SQLite等几种主流数据库

连接SQLServer的实例

image.png

GORM创建数据

首先要定义结构体

image.png

可以发现这里的结构体字段和数据库字段有一些差别,比如Price对应的是user_id

image.png

GORM查询数据

一般来说有两种方式,分别是First和Find

在查询之前,需要定义单个结构体对象或者结构体切片用于接收查询结果

感觉GORM的数据库操作与结构体密不可分

First:用于查询一条数据,若查询不到数据会返回ErrRecordNotFound

Find:用于查询多条数据,查询不到数据不会返回错误,而是返回空内容

image.png

GORM更新数据

db.Model

db.Model($结构体{ID:XX}).Where().Update()

GORM删除数据

image.png

GORM事务

image.png

为了避免用户漏写Commit、Rollback,GROM提供了Tansaction方法用于自动提交事务

image.png

GORM性能提高

两种方式,如图:

image.png

GORM的一些生态,便于开发

image.png

2.Kitex

有关Kitex的相关文档,必须好好补补....

image.png

安装(目前对Windows支持不完善。。。

image.png

定义IDL

在项目管理时,可以统一使用IDL去管理接口

image.png

Kitex生成代码

image.png

Kitex服务注册与发现

image.png

Kitex生态

image.png

3.Hertz——Go的HTTP框架

Hertz的基本使用

image.png

Hertz路由

image.png

同时Hertz也支持了路由组(Group)的能力,用于支持路由分组的能力

image.png

参数路由和通配路由

通过c.Param()方法来获取参数

image.png

参数绑定——帮助我们把HTTP请求里面的参数绑定到结构体里面去

Go貌似经常通过指针来接收和传递值

image.png

Hertz中间件

中间件:

中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信

从这个意义上可以用一个等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件和实用软件区分开来。

简而言之,中间件是基于TCP/IP协议,遵循一定规范的

image.png

如图,在定义了h之后,注册路由之前,使用了一个中间件,此处是一个全局的中间件

Hertz Client

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

image.png

Hertz 代码生成工具

通过定义IDL文件就能自动生成代码???

image.png

举例

image.png

Hertz性能

其性能高于其他框架的重要原因

image.png