go的三件套(Gorm、Kitex、Hertz)
1、Gorm是一个ORM框架 2、Kitex是golang的微服务RPC框架,特点高性能、强可拓展,支持多协议 3、Hertz是字节的http框架,特点高易用性、高性能、高拓展性 4、grom的使用: Gorm的约定(默认) Gorm使用名为ID的字段,作为主键 type product struct{ Code string Price uint }//定义gorm model func (p Product)TableName() string { return “product” }//为model定义表名 func main(){ db,err :=gorm.Open( mysql.Open("user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"), &gorm.Cinfig{})//连接数据库 if err!=nil{ panic("failed to connet database") }
5、gorm支持的数据库:MYSQL、SQLServer、PostgerSQL 6、gorm对数据的操作 (1)查询数据:
- 使用
Find方法查询符合条件的多条记录。例如:db.Find(&users)会返回数据库中所有的用户记录。 - 使用
First方法查询符合条件的第一条记录。例如:db.First(&user)会返回数据库中第一个用户记录。 - 使用
Where方法指定查询条件。例如:db.Where("age > ?", 18).Find(&users)会查询年龄大于18岁的用户记录。
(2)更新数据:
- 使用
Save方法更新已存在的记录。例如:db.First(&user).Update("name", "John")会将第一个用户的名字更新为"John"。 - 使用
Model方法指定更新的数据模型。例如:db.Model(&user).Update("age", 20)会将用户的年龄更新为20岁。
(3)创建数据:
- 使用
Create方法创建新的记录。例如:db.Create(&user)会在数据库中创建一个新的用户记录。
(4)删除数据:
- 使用
Delete方法删除符合条件的记录。例如:db.Delete(&user)会删除指定的用户记录。
7、Grom Hook 常用的GORM钩子函数:
BeforeSave:在模型保存之前触发该钩子。AfterSave:在模型保存之后触发该钩子。BeforeCreate:在创建新模型之前触发该钩子。AfterCreate:在创建新模型之后触发该钩子。BeforeUpdate:在更新模型之前触发该钩子。AfterUpdate:在更新模型之后触发该钩子。BeforeDelete:在删除模型之前触发该钩子。AfterDelete:在删除模型之后触发该钩子。
8、Kitex 的一些主要特点和功能:
- 高性能:Kitex 借助 Golang 的协程(goroutine)和轻量级线程(light-weight thread)模型,能够快速处理大量的并发请求。它通过精细的异步 IO 处理和基于 netpoll 的事件处理,实现了高吞吐量和低延迟的特性。
- 可扩展:Kitex 提供了灵活的组件化架构,支持插件机制,使开发者可以根据需要定制和扩展其功能。例如,支持自定义的编解码器、负载均衡策略和服务发现等。
- 协议支持:Kitex 支持多种网络协议,包括 HTTP/1.1、HTTP/2 和 Thrift 等。开发者可以根据实际需求选择适合的协议进行开发。
- 服务注册与发现:Kitex 提供了插件化的服务注册与发现机制,支持集成常见的注册中心,如 etcd 和 consul。它可以自动从注册中心中发现可用的服务实例,并进行负载均衡。
- 安全性:Kitex 支持基于 TLS 的安全通信,并提供了身份认证和授权的机制,确保服务之间的通信安全性。
- 可观测性:Kitex 提供了丰富的监控和调用链追踪功能,方便开发者进行系统性能分析和故障排查。
9、Hertz Hertz提供了GET、POST、PUT、DELETE、ANY等方法用于注册路由 Hertz的用法:
- 模拟并发请求:Hertz可以用来模拟多个并发请求并发送到目标系统。通过指定并发数和请求速率,可以测试系统在高并发负载下的性能表现。
- 计算请求处理时间:Hertz可以测量单个请求在目标系统中的处理时间。通过发送多个请求并记录每个请求的处理时间,可以评估系统的性能和响应时间。
- 测量系统吞吐量:Hertz可以测量目标系统的吞吐量,即系统在单位时间内能够处理的请求数量。通过同时发送多个请求并调整请求速率,可以确定系统的极限吞吐量和性能瓶颈。
10、Hertz中间件:分为服务端和客户端 11、Hert提供http Client用于帮助用户发送http请求