go-kit example. go-kit微服务探索实践
参考文章
本仓库中示例06.gokit-playground-example是最完整的系列示例, 取自示例05.gokit系列文章(译), 但是添加了很多注释, 比较复杂的示例也做了拆分, 理解起来会更容易.
06.gokit-playground-example: 05.gokit系列文章(译) 部分的示例代码
golang.org/x/time/rate
限流器.juju/ratelimit
限流器.prometheus
进行日志埋点, 使用grafana
查看.consul
中间件做负载均衡与服务发现.consul
中间件做负载均衡与服务发现. 在本例中, client 的角色类似于微服务中的 gateway, 将来自用户的请求转发给后端 server 服务.etcd
中间件做负载均衡与服务发现.hystrix-go/hystrix
断路器工具.07.gokit链路追踪: 05.gokit系列文章(译) 没有涉及到链路追踪的话题, 这里单独列出.
zipkin
中间件添加链路追踪机制.Endpoint类似于web服务的url接口, 一个endpoint表示一个路由接口.
但是Endpoint不能直接对外提供服务, 需要通过Transport转换成http/grpc类型的接口才可以.
2018-09-06
在完成第4个demo时意识到go-kit貌似什么都没有做, 没有gateway(入口路由服务), 微服务间通信为原生grpc, http处理为原生net/http库. ta就像js里的backbone
, 定义好一些核心概念, 组件如何定义, 组件间如何配合, 数据接口如何定义等完全不管...
只有一点, 通过makeXXXEndpoint
及encode
, decode
几个函数后, 我们写的业务逻辑可以同时生成http/grpc两种接口, 只要选择不同的transport进行NewServer
操作即可, 但这grpc-ecosystem
包也能完成.
我已实在想不出继续用ta的理由了, 接下来尝试ta的middleware和监控什么的, 但下一步的重点会放在go-micro
上.