DAY4 了解认识Go的三大框架 | 青训营

53 阅读3分钟

Go框架三件套(Web,RPC,ORM)

课程介绍

Grom

ORM框架,应用广泛。

使用:

Gorm约定:

使用名为ID的字段作为主键

使用结构体的复数(+s)作为表名

字段名作为列名

基础连接数据库的操作。

image-20230811175355468.png GORM支持MySQL,SQLServer,PostgreSQL,SQLLite

DSN:Data Source Name (DSN) [1] 的PDO命名惯例为:PDO驱动程序的名称,后面为一个冒号,再后面是可选的驱动程序连接数据库变量信息,如主机名、端口和数据库名。

对象关系映射(英语: (Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换 [1] 。从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。(类比JAVA的Mybatis)

常规的查询更新新建删除操作。

image-20230811175918273.png

GORM事务相关:

提供了Begin,Commit,Rollback方法用于事务。

提供了Tansaction用于自动提交事务,避免漏写Commit,Rollback

GORM Hook:(默认事务,自动调用函数,可以返回错误。)

hook俗称钩子,是一个 Windows 消息的拦截机制。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先截获该消息。这时钩子函数就可以加工处理(改变该消息),也可以强制结束消息的传递(屏蔽消息)

GORM丰富的扩展生态:

image-20230811183314214.png

Kitex

Golang微服务的RPC框架,高性能,强可拓展。(字节的)

KiteX对Windows支持不完善

使用:

定义IDL,KiteX代码生成,

Client发起请求远程调用代码.

KiteX服务注册和发现(Nacos,ETCD)

KiteX也有一系列的扩展(功能完备)

Hertz

HTTP框架(字节的)

使用:

HTTP 框架负责的就是对 HTTP 请求的解析、根据对应的路由选择对应的后端逻辑了,也就是图上标出来的这些。HTTP 在企业实际业务场景中使用广泛。

使用Hertz监听端口,接受处理对应的请求(Get,Post,Put).

Hertz路由:提供了多种方法注册,还有路由组的功能。

Hertz还提供了参数绑定和校验的功能,Bind,Validate,BindAndValidate。

Hertz中间件:提供了客户端与服务端相关的功能。

Hertz代码生成工具:

提供了代码生成工具Hz,通过定义IDL文件生成对应的基础服务代码。

Hertz具有高性能的特性,网络库Netpoll,Json编解码Sonic,使用sync.Pool复用对象协议层数据解解析优化

Hertz生态:扩展

image-20230811194702112.png

个人总结:

整体上来讲,Go处理相关业务可以类比推到JAVA上,只不过是框架和用法以及相关的约定不一样,整体的思想是一样的,Go处理业务好像和微服务绑定?因为RPC的使用贯穿其中,可以利用Go语言的特点自己编写一个可以处理高并发高流量的RPC项目,考虑写完当下的项目去写一个Go的项目,估计到时候需要具体地学习一下,还是得多练习。

进一步熟悉Gorm,KiteX,Hertz的使用

利用Go和相关框架来开发项目。