kratos README

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

Build Status GoDoc DeepWiki codeCov Go Report Card License Awesome Go Discord

go-kratos%2Fkratos | Trendshift Go Kratos - A Go framework for microservices. | Product Hunt

Translations: English | 简体中文

Kratos

Kratos is a lightweight Go framework for building cloud-native microservices. It provides small, explicit APIs for transport, middleware, registry, configuration, logging, encoding, and code generation so applications can focus on business logic.

Features

Installation

Requirements

Install the CLI

go install github.com/go-kratos/kratos/cmd/kratos/v3@latest
kratos upgrade

Create a Service

kratos new helloworld
cd helloworld
go mod tidy
kratos run

Visit http://localhost:8000/helloworld/kratos after the service starts.

For a fuller generated service flow:

kratos proto add api/helloworld/helloworld.proto
kratos proto client api/helloworld/helloworld.proto
kratos proto server api/helloworld/helloworld.proto -t internal/service
go generate ./...
kratos run

Usage Example

package main

import (
	"github.com/go-kratos/kratos/v3"
	"github.com/go-kratos/kratos/v3/transport/grpc"
	"github.com/go-kratos/kratos/v3/transport/http"
)

func main() {
	httpSrv := http.NewServer(http.Address(":8000"))
	grpcSrv := grpc.NewServer(grpc.Address(":9000"))

	app := kratos.New(
		kratos.Name("helloworld"),
		kratos.Version("v1.0.0"),
		kratos.Server(httpSrv, grpcSrv),
	)
	if err := app.Run(); err != nil {
		panic(err)
	}
}

v3 Migration

Kratos v3 reduces core dependencies and makes previously implicit behavior explicit. Review the v2 to v3 migration guide before upgrading production services.

Further Reading

Development

make test
make lint

Community

Security

If you discover a security vulnerability in Kratos, please contact [email protected]. Security reports are handled privately before disclosure.

Contributors

Thank you for contributing to Kratos. The contribution guide is available in the Kratos documentation.

Kratos contributors

Acknowledgments

The following projects influenced Kratos design:

License

Kratos is open-sourced software licensed under the MIT license.

kratos (go-kratos/kratos)

Searching Database…

26K ·GitHub
Что это такое?Kratos — это лёгкий Go-фреймворк для построения облачных микросервисов с небольшими и понятными API, чтобы ваш код занимался бизнес-логикой, а не служебными мелочами.
Это фреймворк, на котором я построю весь сервис целиком, или просто набор вспомогательных библиотек?Это полноценный фреймворк: Kratos CLI генерирует каркас сервиса, а дальше вы работаете с его явными API для транспорта, middleware, реестра, конфигурации, логирования, кодирования и генерации кода.
Как запустить свой первый сервис?Установите Kratos CLI и создайте с её помощью сервис — когда сгенерированный сервис запустится, откройте локальный URL и проверьте его; в документации описан полный процесс работы с сервисом.
Что должно быть установлено, прежде чем генерировать каркас сервиса?Go 1.25 или новее, а также protoc и protoc-gen-go для генерации кода из Protobuf-описаний.
На что обратить внимание, если я обновляю существующий сервис на Kratos?Переход с v2 на v3 нельзя сделать простой заменой версии: в v3 сокращены базовые зависимости, а ранее неявное поведение стало явным, поэтому в README советуют изучить руководство по миграции, прежде чем обновлять боевые сервисы.
Что Kratos умеет из коробки, чтобы мне не пришлось настраивать это самому?Единый транспортный слой для HTTP и gRPC, подключаемые middleware для восстановления после паник, логирования, валидации, трейсинга, метрик и авторизации, логирование на основе slog с расширениями OpenTelemetry в contrib, а также единообразные подходы к метаданным, ошибкам, валидации и работе с OpenAPI.
Как на практике выглядит подход API-first?Вы описываете API в Protobuf, а Kratos генерирует из этого описания код для HTTP и gRPC — так контракт определяет реализацию сервиса.
Что делать, если в ядре нет нужного мне реестра, хранилища конфигурации или middleware?Компоненты реестра, конфигурации и кодирования подключаемые, а экосистема contrib добавляет необязательные интеграции с реестрами, хранилищами конфигурации, middleware, форматами кодирования и средствами наблюдаемости.
Какие проекты повлияли на дизайн Kratos?В README в качестве источников вдохновения упоминаются go-kit/kit, go-micro, google/go-cloud, go-zero и beego.
Creator
go-kratos
Size
9.8 MB
Stars
26K
Age
7y
Commits · 90 Days