kit README

The project's README from github.com/go-kit/kit. As one markdown file: README.md.

Go kit

GitHub Workflow Status GoDev codecov Go Report Card Sourcegraph

Go kit is a programming toolkit for building microservices (or elegant monoliths) in Go. We solve common problems in distributed systems and application architecture so you can focus on delivering business value.

Sponsors

encore icon Encore – the platform for building Go-based cloud backends.

Click here or Sponsor, above, for more information on sponsorship.

Motivation

Go has emerged as the language of the server, but it remains underrepresented in so-called "modern enterprise" companies like Facebook, Twitter, Netflix, and SoundCloud. Many of these organizations have turned to JVM-based stacks for their business logic, owing in large part to libraries and ecosystems that directly support their microservice architectures.

To reach its next level of success, Go needs more than simple primitives and idioms. It needs a comprehensive toolkit, for coherent distributed programming in the large. Go kit is a set of packages and best practices, which provide a comprehensive, robust, and trustable way of building microservices for organizations of any size.

For more details, see the website, the motivating blog post and the video of the talk. See also the Go kit talk at GopherCon 2015.

Goals

Non-goals

Contributing

Please see CONTRIBUTING.md. Thank you, contributors!

Dependency management

Go kit is modules aware, and we encourage users to use the standard modules tooling. But Go kit is at major version 0, so it should be compatible with non-modules environments.

Code generators

There are several third-party tools that can generate Go kit code based on different starting assumptions.

Projects with a ★ have had particular influence on Go kit's design (or vice-versa).

Service frameworks

Individual components

Web frameworks

Additional reading

kit (go-kit/kit)

Searching Database…

27.4K ·GitHub
这是什么?Go kit 是一个编程工具包(由一组包和最佳实践组成),用于用 Go 构建微服务或结构良好的单体应用。它能帮你解决分布式系统和架构中的常见问题,让你可以专注于业务逻辑。
这是框架,还是一组辅助包的库?它被描述为由可组合包组成的工具包,而不是一个严格的框架。它期望你与非 Go kit 的服务进行交互,以 RPC 作为主要模式,并且不规定部署或编排工具。
我该如何把它添加到 Go 项目中?Go kit 支持 Go modules,所以你可以像添加其他模块依赖一样添加它。它目前处于主版本 0,因此在非 modules 环境中也应当仍然可用。
使用它是否需要 gRPC 或特定的序列化格式?不强制要求任何特定的传输方式或格式。Go kit 支持可插拔的序列化和传输方式(不仅限于基于 HTTP 的 JSON),旨在你现有的基础设施中运行。
除了 RPC,它是否支持发布/订阅或其他消息模式?不支持。Go kit 目前只专注于 RPC 风格的消息传递,并明确不打算支持发布/订阅、CQRS 等其他模式,也不对部署或编排工具持有意见。
它是为谁设计的?它面向任何规模的 Go 团队和组织,特别是那些希望在 Go 中使用类似 JVM 生态那样的微服务工具,来构建面向服务架构的团队。
能否为 Go kit 服务自动生成代码?可以。已经有几个第三方生成器,例如 sagikazarmark/protoc-gen-go-kit 和 metaverse/truss,可以从不同的起点生成 Go kit 的代码框架。
为什么要用 Go kit,而不是 go-micro 或 gizmo?Go kit 专门面向异构的面向服务架构(SOA)环境,即大多数对等服务都不是基于 Go kit 构建的场景。它以 RPC 作为主要模式,并且不对部署和编排工具持有意见,这与那些观点更强的完整框架不同。
Go kit 的 API 是否仍在持续演进?根据 README,它的主版本号仍为 0,这意味着其 API 尚不能保证稳定。
What are similar projects?grpc-go, kratos, go-zero, chi, encore, graftcode, grpc, fiber
Creator
go-kit
Size
7.2 MB
Stars
27.4K
Age
11y
Commits · 90 Days