Kubernetes微服务实战
上QQ阅读APP看书,第一时间看更新

3.3.1 使用Go kit构建微服务

Go kit都是关于最佳实践的。你的业务逻辑通过纯Go语言库实现,只需处理接口和Go结构体。API、序列化、路由和网络中涉及的所有复杂内容都被划分到清晰独立的层,这些层利用了Go kit和基础设施中的概念(例如传输、端点和服务)。这带来了绝佳的开发体验,你可以在尽可能简单的环境中开发和测试应用程序代码。下面是Delinkcious的一个服务接口——社交图谱。它采用普通的Go代码,不涉及API、微服务,甚至没有导入Go kit:

该接口的实现位于一个Go包中,这个包完全不知道Go kit的存在,甚至都不知道它是否使用在微服务中:

将Go kit服务看作是一个具有不同层的洋葱也许会是一个好方法。核心是你的业务逻辑,位于各个层次之上的是各种关注点,例如路由、速率限制、日志和指标等,这些内容最终会通过传输层公开给其他服务或外部,如图3-1所示。

Go kit主要通过使用请求-响应模型支持RPC风格的通信。

图3-1 Go kit服务层级