基本架构
- 微服务采用go-micro(v2)框架
- http服务采用beego(v1)框架
- 拓扑也很典型
具体实施
第一个版本
- 由go-micro提供service层
- http网关作为微服务的客户端接入
- 项目结构
- 代码
第二个版本
思考
- api那层经过抽象以后都有大量重复代码,是否可以自动生成api-gateway?
- 为何不以protobuf文件为设计指导,专注于开发service?
自问自答
- 两个问题其实可以通过写protobuf插件的形式来生成代码,然后专注service开发
- 插件需要实现protoc-gen-go中的四个方法
- 生成基于beego的http gateway
- 采用新方案项目结构
附上在下编写的protoc-gen-bmicro插件
- protoc-gen-bmicro
- TODOs:
- gen-code
- beego.validation
- rate-limiting
- caching
- loging
- authorization
转载请注明:攻壳tech » go语言微服务api网关实践