go微服务框架使用总结
记录下自己使用下来的go微服务框架,kratos
go-zero
kitex
.
kratos
bilibili公司出品的框架,当年公司内部代码泄漏,现在开源优化已经到了v2版本.
参考了DDD
,Clean Architecture 设计理念.
项目结构清晰,每一层级的角色定位清晰,没有全局变量污染,还引入了wire
进行依赖倒置.
data层暴露了clean up
函数对资源句柄进行回收.
框架层与业务层解耦,框架生命周期感知清晰.
组件开放接口设计,扩展性强
服务使用的是GRPC+Protocol Buffer, 同一服务进程下暴露了GRPC端口和HTTP端口.
HTTP是通过protoc组件protoc-gen-go-http
反射路由到同一RPC方法.
框架整体设计比较轻量,适合自己组合微服务方案.
总结
适合团队有架构组的人使用,前期需要自己组合方案,整合组件.后期基本完善,使用体验良好.
HTTP层建议使用gin
框架,因为protoc-gen-go-http
适合开发阶段调试用,重度需求满足不了,自己做适配一路都是新坑.
Go-zero
一个公司CTO主推项目,加入了CNCF.
HTTP单独部署一个项目,路由方法定义通过编写.api
后缀文件(Go-zero定义的语法)实现.
他们的设计理念是实用性.
总结
生产上能用。对于定制化业务,直接fork他们官方的cli
工具,然后公司内部修改维护该仓库.
Kitex
字节跳动公司的开源项目,分RPC框架Kitex
和HTTP框架Hertz
.
2个框架是2个团队的产物,设计规范不一致.
框架替换原有了go/net
设计,实现高性能.(生产稳定性需要查阅官方资料验证)
IDL支持Thrift
,官方对Thrift的支持度很高,因为他们内部使用Thrift,但也支持Protobuf.
他们的设计理念是高性能
总结
Kitex只是cloudwego组织下子项目,Thrift不是特别吸引我,
希望cloudwego/netpoll
能封装成一个适配性高组件.