Go-kit调研文档

简单的计划 · · 4647 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

目录


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工具生成公共代码,也可以考虑把公共代码抽出来

相关链接

演示demo

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


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:简单的计划

查看原文:Go-kit调研文档

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4647 次点击  ∙  2 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传