Go-kit简介
Go-kit 并不是一个微服务框架,而是一套微服务工具集,我们可以用工具Go-kit为 Go 创建微服务,包含包和接口,有点类似于JAVA Spring Boot,但是没那么强大。可以利用Go-kit提供的API和规范可以创建健壮的,可维护性高的微服务体系,它提供了用于实现系统监控和弹性模式组件的库,例如日志记录、跟踪、限流和熔断等,这些库可以协助开发人员提高微服务架构的性能和稳定性。
Go-kit官网地址: https://gokit.io/
Go-kit 当前集成的组件
功能 | 组件 |
---|---|
circuit breaker断路器 | hystrix-go gobreaker handy breaker |
Metrics 指标 | prometheus, dogstatsd, influx,graphite 等多个平台 |
服务发现 | consul, dnssrv, etcd, eureka, lb, zookeeper |
Request Tracing | Opentracing, LightStep, AppDash, Zipkin |
Go-Kit与Go-Micro对比
Go-Kit 是一个微服务的标准库。它可以提供独立的包,通过这些包,开发者可以用来组建自己的应用程序。微服务架构意味着构建分布式系统,这带来了许多挑战,Go-Kit 可以为多数业务场景下实施微服务软件架构提供指导和解决方案。
Go-Micro 是一个面向微服务的可插拔 RPC 框架,可以快速启动微服务的开发。Go-Micro 框架提供了许多功能,无须重新“造轮子”,所以开发者可以花更多的时间在需要关注的业务逻辑上。但是 Go-Micro 在快速启动微服务开发的同时,也牺牲了灵活性,并且将 gRPC 强制为默认通信类型,更换组件不如 Go-Kit 简便。
Go-Kit安装
go get github.com/go-kit/kit
Go-Kit三层架构
Go Kit 框架分层示意图
基于Go-Kit 的应用程序架构由三个主要部分组成:传输层、接口层和服务层。
1.传输层(
Transport): 用于网络通信,服务通常使用 HTTP 或 gRPC 等网络传输方式,或使用 NATS 等发布订阅系统相互通信。除此之外,Go-Kit 还支持使用 AMQP 和 Thrift 等多种网络通信模式。。
2.接口层(EndPoint): 定义Request、Response格式,并可以使用装饰器(闭包)包装函数,以此来实现各个中间件嵌,比如在请求响应的时候添加日志等。 在Go-Kit中,服务中的每个对外提供的接口方法都会被定义为一个端点,以便在服务器和客户端之间进行网络通信。每个端点通过使用 HTTP 或 gRPC 等具体通信模式对外提供服务。
3.服务层(
Service): 这里就是我们
、接口等相关信息存放,。它不会也不应该进行 HTTP 或 gRPC 等具体网络传输,或者请求和响应消息类型的编码和解码。。 具体的业务逻辑实现,包括核心业务逻辑