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-модули, поэтому его добавляют так же, как любую другую зависимость модуля. Поскольку его мажорная версия 0, он также должен работать и в средах без модулей.
Нужен ли мне gRPC или определённый формат сериализации, чтобы его использовать?Никакой конкретный транспорт или формат не обязателен: Go kit поддерживает подключаемые сериализацию и транспорт (а не только JSON поверх HTTP) и рассчитан на работу в вашей существующей инфраструктуре.
Поддерживает ли он pub/sub или другие шаблоны обмена сообщениями, помимо RPC?Нет. Go kit сейчас сосредоточен только на обмене сообщениями в стиле RPC и явно не стремится поддерживать другие шаблоны, например pub/sub или CQRS, а также не предписывает подходов к развёртыванию и оркестрации.
Для кого это предназначено?Для команд и организаций любого размера, которые пишут на Go и строят сервис-ориентированные архитектуры, особенно для тех, кто хочет инструменты для микросервисов в духе экосистемы JVM, но на Go.
Можно ли автоматически генерировать код для сервисов на 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