Go Kit是一个使用Go编写的微服务的标准库

Go kit


Go kit 是一个使用 Go 语言构建微服务(或优雅的单体应用)的编程工具包。我们致力于解决分布式系统和应用架构中的常见问题,让您专注于创造业务价值。

Go 是一门精巧的语言,非常适合编写微服务。Go Kit 填补了 Go 本身优秀标准库的不足,让您的团队有信心在整个技术栈中采用 Go。

动机

Go 已成为服务器端语言,但在 Facebook、Twitter、Netflix 和 SoundCloud 等所谓的“现代企业”公司中,它的应用仍然不足。许多此类组织已转向基于 JVM 的技术栈来处理其业务逻辑,这在很大程度上归功于直接支持其微服务架构的库和生态系统。

为了达到更高的成功水平,Go 需要的不仅仅是简单的原语和惯用法。它需要一个全面的工具包,用于在大型环境中进行一致的分布式编程。Go Kit 是一套软件包和最佳实践,它为各种规模的组织提供了一种全面、强大且可靠的微服务构建方法。

更多详情,请参阅网站这篇激励人心的博客文章演讲视频。另请参阅 GopherCon 2015 上的 Go kit 演讲

目标

  • 在异构 SOA 架构中运行 - 预计主要与非 Go-kit 服务交互
  • RPC 作为主要消息传递模式
  • 可插拔序列化和传输 - 不仅仅是基于 HTTP 的 JSON
  • 在现有基础架构中运行 - 无需强制使用特定工具或技术

非目标

  • 支持除 RPC 之外的消息传递模式(目前)- 例如 MPI、发布/订阅、CQRS 等
  • 重新实现可通过调整现有软件提供的功能
  • 对运维问题提出意见:部署、配置、流程监控、编排等。

依赖管理

Go Kit 支持 模块,我们鼓励用户使用标准模块工具。但 Go Kit 的主版本为0,因此它应该与非模块环境兼容。

代码生成器

有几种第三方工具可以根据不同的初始假设生成 Go Kit 代码。

相关项目

带★的项目对 Go Kit 的设计产生了特别的影响(反之亦然)。

服务框架

  • gizmo,来自《纽约时报》的微服务工具包 ★
  • go-micro,分布式系统开发框架 ★
  • gotalk,异步对等通信协议和库
  • Kite,微服务框架
  • gocircuit,动态云编排

各个组件

Web 框架

示例

用户一致认为,学习 Go Kit 最有效的方法是研究和学习示例服务。您可以在这里找到一些示例,它们将帮助您了解 Go Kit 的惯用手法、模式和最佳实践。

  • stringsvc 是一个教程,它将指导您从基本原理开始编写服务。它可以帮助您理解 Go Kit 设计中的决策。
  • addsvc 是原始的示例服务。它在所有支持的传输协议上公开了一组操作。它具有完整的日志记录和检测功能,并使用分布式跟踪。它还演示了如何创建和使用客户端包。它几乎演示了 Go Kit 的所有功能。
  • profilesvc 演示了如何使用 Go Kit 编写具有 REST 风格 API 的微服务。它使用了 net/http 和优秀的 Gorilla Web 工具包。
  • shipping 是一个完整的、基于领域驱动设计原则的、由多个微服务组成的“真实世界”应用程序。
  • apigateway 演示了如何实现由 Consul 服务发现系统支持的 API 网关模式。

补充阅读

关于项目

Go Kit 是一个用于用 Go 语言构建微服务(或优雅的单体式应用)的编程工具包。我们致力于解决分布式系统和应用架构中的常见问题,让您专注于交付业务价值。
MIT
Golang
27,533
2451
660
2015-02-03
2024-07-19

增长趋势 - stars