Gorm、Kitex、Hertz:三件套介绍与基本用法
Gorm
Gorm 是 Golang 中广受欢迎的 ORM(对象关系映射)框架,已经发展数十年,具有强大的功能和出色的性能。
ORM 框架用于将面向对象的概念与数据库中的表相对应,简化数据操作过程。在 Golang 中,自定义的结构体与数据库表一一对应,结构体的实例对应表中的一条记录。
基本用法
定义结构体:在 Gorm 中,定义结构体来映射数据库表。
go
type User struct {
ID uint `gorm:"primary_key"`
Name string `gorm:"type:varchar(100)"`
Email string `gorm:"type:varchar(100);uniqueIndex"`
}
1
2
3
4
5
2
3
4
5
增加数据:使用 Create 方法来新增数据条目。
go
db.Create(&User{Name: "John", Email: "john@example.com"})
1
查询数据:使用 Find 进行数据查找,可以通过 Where 和 Or 条件构建查询条件。
go
var user User
db.Where("name = ?", "John").First(&user)
1
2
2
更新数据:使用 Update 进行数据更新,可以使用 Model 结合 Update 或 Updates 方法来更新列。
go
db.Model(&user).Update("Name", "John Updated")
1
删除数据:使用 Delete 进行数据删除操作,根据是否包含 gorm.deletedat 字段执行物理或逻辑删除。
go
db.Delete(&user)
1
Kitex
https://www.cloudwego.io/zh/docs/kitex/overview/
Kitex 是字节开发的高性能 Golang 微服务 RPC 框架,具备出色的可扩展性和高性能。 服务端
go
func main() {
srv := kitex.NewServer(new(YourServiceImpl),
kitex.WithServiceAddr(":8888"))
srv.Run()
}
1
2
3
4
5
2
3
4
5
客户端
go
func main() {
client := NewYourServiceClient("127.0.0.1:8888", kitex.WithTransportProtocol(protocol.TRPC))
// 调用RPC方法
}
1
2
3
4
2
3
4
高性能:Kitex 具有优异的性能表现,适用于高负载的微服务场景。 可扩展:支持多协议,并且有丰富的开源扩展库,可以满足各种需求。
Hertz
https://www.cloudwego.io/zh/docs/hertz/overview/
Hertz 是字节开发的 HTTP 框架,结合了其他开源框架的优点,同时满足字节跳动内部的需求,具有高可用性、高性能和高扩展性。
go
package main
import (
"context"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/app/server"
"github.com/cloudwego/hertz/pkg/common/utils"
"github.com/cloudwego/hertz/pkg/protocol/consts"
)
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()
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
高可用性:Hertz 框架被设计为具有高度的稳定性和可用性,适用于大规模的应用场景。 高性能:框架在性能方面表现出色,适合处理高并发请求。 高扩展性:Hertz 框架允许根据业务需求进行定制和扩展,以满足复杂应用的要求。