微服务是软件架构领域目前最流行的术语之一。
对于『微服务』一词,有许多不同的解释,我想说的是,微服务是单个程序员可以设计、实现、部署和维护的应用程序。
在一个整体应用程序中,组件通过语言级的方法或函数彼此调用。相反,基于微服务的应用程序是运行在多台机器上的分布式系统。每个服务实例是不同的进程。因此,这些服务必须使用进程间通讯进行交互。
服务间通信最简单的解决方案是基于 HTTP 协议使用 JSON 格式的数据进行交互,然后还有更多的选择比如:gRPC,pub/sub 等等。
这听起来很酷,微服务也带来了很多挑战:
- 序列化
- 日志记录
- 熔断
- 请求跟踪
- 服务发现
如果你是一个 Go 开发者,go-kit 为开发者提供了一套抽象,包和接口,这样你实现的服务就可以标准化。
我想开始一个使用 go-kit 工具的深入教程。我们将创建一个微服务系统,设置环境,重温服务件交互的逻辑。
我们将用以下几个微服务创建一个 bug 追踪系统:
- Users
- Bugs
- Notificator
有些服务可以通过 HTTP 协议使用 JSON 数据交互,服务间通信将使用 gRPC 实现。
go-kit 回顾
我们已经理解 go-kit 并不是框架,我们可以用工具 kit 为 Go 创建微服务,包含包和接口,它类似于 JAVA Spring Boot , 但是只是小范围。
让我们开始配置项目:
在我们未开始之前,我们可以使用 “kitgen” 命令行工具生成服务
go-kit CLI
创建独立的包可