-
kratos官网说明
https://github.com/go-kratos/kratos -
为啥要用该框架
go语言可用框架有很多,例如:gin,go-mirco,kratos等。
考虑到使用kratos的原因
1. 该框架是由哔哩开发的,也属于大厂。根据目前哔哩哔哩的流量,该框架也不会差到哪去
2. 该框架 http 服务器部分是基于 go 的 gin 做的二次开发
3. 该框架的 rpc 部分是基于 go 的 grpc 开发的,也可以使用谷歌的 *google.protocbuf* 等来约束 grpc 的字段( google 的 protocbuf 需要单独的学习)
4. 该框架集成了mysql / 服务注册发现 / 熔断机制 / redis / memcache等
5. 服务注册和发现组件可以适配不同的框架。目前我们使用的是 etcd
6. 该框架清晰的分为 dao 层,server 层,service 层
7. 该框架使用 google 的 wire 实现不同服务的依赖注入
8. 有待发现
- kratos框架的不足之处
1. mysql部分不支持orm框架,这一点很蛋疼。如果可以的话,自己修改mysql驱动部分来,可以集成gorm框架。
2. 基于.proto文件生成的bm.go和pb.go文件是必须同时存在的(除非你不用http服务部分)。主要是bm.go中以来的参数在pb.go中,很蛋疼。如果只需要http部分的话就会显得很臃肿,因为pb.go一般是groc生成的。听不懂可以往后看,慢慢就会明白这些
- 开发环境包含
组件 | 说明 |
---|---|
go环境 | go1.13.6 |
kratos | 0.3.3(版本应该没啥需求) |
网友评论