代码生成工具truss https://github.com/metaverse/truss
Go-kit最核心是提供了三层模型来解耦业务,这是我们用它的主要目的,模型由上到下分别是
transport -> endpoint -> service
可以理解为是个拦截器,负责请求协议的实现和路由转发,请求和响应的序列化和反序列化
负责功能逻辑转发,这一层会调用Service具体方法
服务功能具体实现,这样便于测试,只要 mock 传入的依赖参数即可
其实也就是能解决微服务中常见的问题
hystrix-go gobreaker handy breaker
prometheus, dogstatsd, influx,graphite 等多个平台
consul, dnssrv, etcd, eureka, lb, zookeeper
Opentracing, LightStep, AppDash, Zipkin
每个接口的代码太多,太啰嗦
主要体现在 Go-kit 的三层模型
在 Endpoint 层,每个 endpoint 都需要重复类似的转换代码,需要写很多decode和encode函数,当然这一点可以利用truss工具生成公共代码,也可以考虑把公共代码抽出来