Go 语言框架体验 | 青训营笔记

95 阅读2分钟

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

写在开头

本人是一个第一次参加字节青训营的学生,主要是简单记录一下自己学习的过程以及复习(详细的需要自己去看每天对应的课程),每天会发前一天课程的笔记以及自己的思考(对项目)

三大框架

看了字节的课程里三大框架,分别由Web/RPC/ORM,其中Hertz和Kitex都是字节自己的开源框架,一开始我还好奇为什么不用gin,倒是疏忽了大厂肯定会有自己的框架,而字节的框架体验下来也是很不错的,效率不错的同时也注重了安全性,很严谨。

Hertz

首先就是web框架Hertz,其实web框架都大同小异,无非就是http的请求流程,路由,各种资源,中间件等等,而在课程里让我感觉到不同的是Hertz的上下文信息有两个,一个是用来处理原信息,一个做请求处理。

可以看一下基础的demo

func main() {
	h := server.Default()

	h.GET("/ping", func(c context.Context, ctx *app.RequestContext) {
		ctx.JSON(consts.StatusOK, utils.H{"message": "pong"})
	})

	h.Spin()
}

上面就是定义了一个可以以GET请求到的url,localhost:8888/ping就可以请求到一个json,message:pong 可以用postman看一看。

image.png

其他的可以去看官方文档! 快速开始 | CloudWeGo

Gorm

Gorm是一个优秀的orm框架,简单的来说就是可以用Go语言的代码去操作数据库!性能很高效,为了防止代码占用很多篇幅就不放了,如果有学过java的应该知道mybatis,是差不多的,我把文档连接放在这里,可以自己去查阅 GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.

Kitex

Kitex也是字节自己开源的RPC框架。

RPC是什么

RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议的存在,例如TPC/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用程序更加容易。

过程就是业务处理、计算任务,更直白的说,就是程序,就是想调用本地方法一样调用远程的过程

为什么要使用RPC

1:服务化/微服务 2:分布式系统架构 3:服务可重用 4:系统间交互调用

而Kitex要搭配IDL来使用,非常的方便,可以一键生成代码。如果你不太理解,可以去了解一下IDL和微服务,然后结合字节的文档看一看

Kitex | CloudWeGo