go-kit是一套帮助开发者构建健壮、可靠、可维护的微服务的golang工具包集合。最初应用于大型企业开发,但是很快也开始为小型初创企业和组织服务。
go-kit自上而下采用三层架构方式:Transport、Endpoint、Service。Transport层主要负责与传输协议HTTP、gRPC、Thrift等相关的逻辑;Endpoint层主要负责request/response格式的转换,以及公用拦截器相关的逻辑;Service层则专注于业务逻辑。Endpoint层作为go-kit的核心,采用类似洋葱的模型,提供了对日志、限流、熔断、链路追踪、服务监控等方面的扩展能力。为了帮助开发者构建微服务,go-kit提供了对consul、etcd、zookeeper、eureka等注册中心的支持。
本人通过学习官方网站、github实例以及国内外的一些与go-kit相关的文章,对go-kit的使用方式进行了学习,并通过编写实例、在社区分享文章进行了强化。希望与广大go-kit的爱好者多多沟通,共同进步。
这篇文档将对过去一段时间写的文章与实例程序进行汇总,作为一个目录供大家交流。本系列文档以算术运算服务为基础,逐步扩展与微服务有关的功能。
- :使用go-kit的三层架构模式构建了算术运算服务,Transport层使用HTTP方式。
- :使用ServiceMidlleware为Service层增加日志记录功能,使用go-kit内置的log组件。
- :使用endpoint.Middleware增加限流逻辑,分别使用go内置的time/rate和juju/ratelimit两种方式实现。
- :通过ServiceMiddleware方式,使用Prometheus的Reporter组件(go-kit内置实现)收集服务接口请求次数、请求延时的运行指标;然后通过Grafana实现指标数据的可视化查看。
- :本文选择Consul作为注册中心,使用go-kit内置的服务发现机制实现服务发现功能。
- :由于一文中,服务发现的方式不够通用,本文采用“命名服务”的方式,实现了一个简单的API网关。只是思路实现,未做优化。
- :本文使用go-kit的tracing组件和zipkin-go包,为网关服务和算术运算服务增加了链路追踪功能,以实例方式演示了在go-kit中集成Zipkin的方式。
- :本文在go-kit中使用hystrix-go为网关服务gateway增加了服务熔断治理方案,通过模拟register服务从“正常-故障-恢复”,在hystrix-dashboard中观察到断路器状态的变化。
- :本文结合实例,在go-kit微服务中引入jwt。
以上为目前go-kit系列的文章,每篇文章都对应示例代码,可以通过获取源代码。我会随着实际的学习情况,对该系列文章不断完善。
由于本人的水平有限,文章中肯定存在描述不当或者错误的地方,希望大家批评指正。
本文首发于本人微信公众号【兮一昂吧】,欢迎扫码关注!