一、Go kit简介
Go kit 是一个用于构建可扩展、灵活和可维护微服务的框架和工具集合。它提供了一系列库和组件,涵盖了微服务开发的各个方面,包括服务发现、负载均衡、通信、日志记录、请求跟踪、限流、熔断等。
Go kit 构建微服务时遵循一种类似于传统三层架构的模式,这个模式通常包括以下层:
- Service(服务):
Service 是一个定义了特定业务逻辑的接口,它封装了应用程序的业务功能。
在 Go kit 中,你可以创建一个或多个 Service 接口的实现,用于处理具体的业务逻辑。每个 Service 可以包含多个方法来执行不同的操作。 - Endpoint(端点):
Endpoint 是将外部请求转换为内部服务调用的中间件。
在 Go kit 中,你可以使用 Endpoint 来定义和包装每个服务方法(service method)。每个端点都负责处理特定的请求,并将其转发到相应的 Service 方法。 - Transport(传输):
Transport 是负责处理外部请求和服务之间通信的组件。
在 Go kit 中,你可以使用不同的传输层,如 HTTP、gRPC 或任何其他自定义传输层,来处理请求和响应的编码、解码、路由等。
在 Go kit 中,将服务的业务逻辑封装到 Service 接口的实现中,然后通过 Endpoint 将外部请求转发到相应的 Service 方法。最后,通过 Transport 处理请求和响应的传输细节。
二、搭建简单的http服务
下面演示如何使用 Go kit 快速搭建一个微服务,实现通过userId获取用户名
项目结构
// 项目结构
-| Server
----| UserServer.go
-| EndPoint
----| UserEndPoint.go
-| Transport
----| UserTransport.go
- main.go
- go.mod
2.1 Server层
Server层实现业务逻辑
// UserService.go 实现业务
package Service
// IUserService 用于定义业务方法的接口
type IUserService interface {
GetName(userId int) string
}
// UserService 用于实现上面定义的接口
type UserService struct{
}
// 实现上方定义的业务方法