Go-kit 包介绍

本身不是一个框架,而是一套微服务工具集,是框架的底层,用它的话来说,如果你希望构建一个框架,而Go-kit 就希望成为你的框架的一部分
可以用Go-kit 做适应自己平台的框架
它自身称为toolkit,并不是framework
它主要是为了满足5大原则,单一职责原则,开放原则,封闭原则,依赖倒置原则,接口隔离原则

包内工具

代码生成工具truss https://github.com/metaverse/truss
三层模型

Go-kit最核心是提供了三层模型来解耦业务,这是我们用它的主要目的,模型由上到下分别是
transport -> endpoint -> service

  1. Transport

可以理解为是个拦截器,负责请求协议的实现和路由转发,请求和响应的序列化和反序列化

  1. Endpoint

负责功能逻辑转发,这一层会调用Service具体方法

  1. Service

服务功能具体实现,这样便于测试,只要 mock 传入的依赖参数即可
兼容功能

Rate Limiter 限流器
Logging 日志
Request tracing 请求追踪
Service Discovery 服务发现

相关组件

其实也就是能解决微服务中常见的问题

  1. circuit breaker断路器

hystrix-go gobreaker handy breaker

  1. Metrics 指标

prometheus, dogstatsd, influx,graphite 等多个平台

  1. 服务发现

consul, dnssrv, etcd, eureka, lb, zookeeper

  1. Request Tracing

Opentracing, LightStep, AppDash, Zipkin
缺点

  1. 框架太繁琐

每个接口的代码太多,太啰嗦

  1. 难理解

主要体现在 Go-kit 的三层模型

  1. 冗余代码

在 Endpoint 层,每个 endpoint 都需要重复类似的转换代码,需要写很多decode和encode函数,当然这一点可以利用truss工具生成公共代码,也可以考虑把公共代码抽出来
相关链接

官网 https://gokit.io/
github https://github.com/go-kit/kit
入门指南 https://www.jianshu.com/p/cffe039fa060
例子 http://gokit.io/examples/
一套demo https://juejin.im/post/5c861c93f265da2de7138615
组件介绍 https://blog.csdn.net/warrior_0319/article/details/77548958

演示demo

https://github.com/Kevin005/gokit-simple-restful-golang

作者:简单的计划
链接:https://www.jianshu.com/p/5463d1ad8749
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后编辑: Simon  文档更新时间: 2021-02-04 15:52   作者:Simon