Go-kit介绍及构建微服务

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 等具体网络传输,或者请求和响应消息类型的编码和解码。。

 

 

 

 

 

posted @ 2020-06-02 02:45  songguojun  阅读(2392)  评论(0编辑  收藏  举报