Go语言框架三件套入门【自学自讲】

本文介绍了Go语言中的三种重要框架:ORM框架Gorm用于简化数据库操作,微服务RPC框架Kitex专注于高性能和可扩展性,而微服务HTTP框架Hertz提供了高易用性和扩展性,以提升网站开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文旨在帮助读者对这三种框架产生认知,而非帮助读者掌握这三种框架。

 目录

1、什么是框架?

2、三大框架小介绍 

Gorm框架

Kitex框架

Hertz框架 


1、什么是框架?

框架是一种提供了预定义功能和工具的软件结构,旨在帮助开发人员更轻松地构建应用程序,减少重复代码,提高开发效率,常见类型包括Web、前端、后端、移动应用和游戏开发框架。

框架通常做的事情,就是让我们写代码更加快速,并且和别人遵循同一套规范,便于代码扩展功能或者维护等等。通常做的规范就是把硬编码变成配置文件,或者把许多的功能汇总在一起,兼容其它框架,让工程代码更加有序,让我们更加注重业务逻辑代码。 

2、三大框架小介绍 

简单地介绍完框架是什么之后,我们来讲一讲今天要提到的三个Go语言框架,分别是gorm框架、kitex框架和hertz框架。

Gorm框架

gorm框架文档:GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.

 

可以看出来gorm框架有很多特性,并且从很多关键词可以看出来gorm框架是一个与数据库交互的框架。 

GORM 是 Go 语言中最受欢迎的 ORM 库之一,它提供了强大的功能和简洁的 API,让数据库操作变得更加简单和易维护。

这边简单介绍一下什么是ORM。

ORM,全称Object-Relational Mapping(对象-关系映射),是一种编程技术或工具,用于将关系型数据库(如SQL数据库)中的数据映射到面向对象编程语言中的对象模型。ORM的目标是在数据库和编程语言之间建立一个桥梁,使开发人员能够使用面向对象的方式来操作数据库,而不必直接编写SQL查询语句。

ORM提供了以下主要功能和优势:

  1. 简化数据库访问:ORM框架隐藏了与数据库交互的复杂性,使开发人员能够使用面向对象的代码来执行数据库操作,而不必编写繁琐的SQL语句。

  2. 跨数据库兼容性:ORM框架通常提供了跨多种数据库系统的支持,使应用程序更具可移植性。

  3. 对象关系映射:ORM将数据库中的表映射到编程语言中的类,将表中的行映射为类的对象,使开发人员能够以自然的方式处理数据。

  4. 数据验证和类型安全:ORM框架通常提供了数据验证和类型安全的机制,防止不正确或无效的数据被插入数据库。

  5. 提高开发效率:通过减少手动SQL编码的需求,ORM可以大大提高开发速度,并降低了出错的可能性。

  6. 复杂查询支持:ORM通常提供了丰富的查询API,允许开发人员执行复杂的查询操作,而不必编写复杂的SQL语句。

 简单来说,就是ORM就是用来处理编程语言和数据库的桥梁,不再需要通过写mysql语句去与数据库交流,而是用ORM自带的API,使我们对于数据库的处理可以直接用编程语言完成。

例如Gorm框架就是个ORM框架,它可以这样完成一条数据库记录的删除:

// Email 的 ID 是 `10`
db.Delete(&email)
// DELETE from emails where id = 10;

// 带额外条件的删除
db.Where("name = ?", "jinzhu").Delete(&email)
// DELETE from emails where id = 10 AND name = "jinzhu";

这样我们就避开书写长串的Mysql语句,并且让代码更加符合业务逻辑。

Kitex框架

Kitex框架文档:Kitex | CloudWeGo

Kitex[kaɪt’eks] 字节跳动内部的 Golang 微服务 RPC 框架,具有高性能强可扩展的特点,在字节内部已广泛使用。如果对微服务性能有要求,又希望定制扩展融入自己的治理体系,Kitex 会是一个不错的选择。

这是个 微服务 RPC 框架 。

这是什么意思呢?

我们先来说说什么是RPC框架。 

RPC(Remote Procedure Call,远程过程调用)框架是一种用于分布式系统的通信协议和编程模型,它允许不同计算机或进程之间的程序能够像调用本地函数一样进行通信。通过RPC框架,你可以远程调用位于另一台计算机上的函数或方法,而无需了解底层网络细节。

 简单来说就是,我可以远程访问另一个地方的程序,调用别人的方法来当作自己的使用。这是一种分布式系统的思想。我们可以把一个完整的工程,分个多个独立的业务,比如银行,可以分成存储业务,转账业务,办卡业务……这些业务之间相互独立,就可以把这些业务分到各个计算机上去处理。那什么是微服务呢?微服务就是这里的每个完整业务,每个业务都能对外提供服务。比如就算我的存储业务瘫痪了,我的办卡服务依旧可以对外服务。而远程过程调用,其实也可以认为是远程方法调用。我们利用客户端和服务器交互的特性,让客户端运行服务器上的方法,就像是在本地运行一样。

放一下kitex的架构,可以看到最上方的客户端和服务器端是极为重要的。

Hertz框架 

Hertz框架文档:Hertz | CloudWeGo

Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttpginecho 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。 如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。 

这就是Go语言的一种Http框架,整合了许多框架的特性,让开发者可以愉快地进行网络交互,处理http请求等等。下面是Hertz的架构:

 

左边的Hz是Hertz框架的脚手架,可以帮助我们快速开发。右边是一些日志、测试、报错等等也属于框架的一部分。

然后中间的主体就是四层核心,分别是应用层、路由层、协议层和传输层。

我们从下往上看。

传输层是我们进行网络交互的基石,强大的库里给我们提供了许多网络交互的方法,让我们不需要去考虑网络传输的细节。其中Netpoll和Go Net都是很好用的网络库。

再往上一层是协议层,确定了使用哪一版本的http协议传输。

再往上是路由层。这里处理许多有关路由的逻辑,比如给路由分组,或者增加路由等等。

最上面就是应用层了。我们可以看到最显眼的就是其中的客户端和服务器【所以也可以和Kitex框架相结合】。这里是处理业务逻辑和直接的交互等等……

所以到这里,读者应该已经对Hertz框架有了一些认知了。Hertz框架就是让用户可以处理好网络交互【Http协议】、路由控制,并且其具有的高扩展性,让框架之间可以相辅相成。

所以这就是我们的微服务HTTP框架Hertz,我们的网站开发因它而更加便利。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值