Go-kit调研文档

目录

Go-kit 包介绍

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

包内工具

代码生成工具truss https://github.com/metaverse/truss

三层模型

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

transport -> endpoint -> service

1. Transport

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

2. Endpoint

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

3. Service

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

兼容功能

  1. Rate Limiter 限流
  2. Logging 日志
  3. Request tracing 请求追踪
  4. Service Discovery 服务发现

相关组件

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

1. circuit breaker断路器

hystrix-go gobreaker handy breaker

2. Metrics 指标

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

3. 服务发现

consul, dnssrv, etcd, eureka, lb, zookeeper

4. Request Tracing

Opentracing, LightStep, AppDash, Zipkin

缺点

1. 框架太繁琐

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

2. 难理解

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

3. 冗余代码

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

原文 

https://studygolang.com/articles/21014

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Go-kit调研文档

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址