1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/haylim-kratos

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh.md 8.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 01:07 09b11df

Кратос

Кратос — это набор облегчённых микросервисных фреймворков Go, включающий в себя множество функций и инструментов для микросервисов.

Название происходит от игры God of War, основанной на греческой мифологии, в которой рассказывается о приключениях Кратоса (Kratos), ставшего богом войны после убийства богов.

Цели

Мы стремимся предоставить полный опыт разработки микросервисов, интегрируя связанные фреймворки и инструменты. После интеграции управление микросервисами становится незаметным в общем процессе разработки, что позволяет разработчикам сосредоточиться на бизнес-логике. Для каждого разработчика фреймворк Kratos также является отличным учебным ресурсом, который позволяет изучать и использовать технологии и опыт в области микросервисов.

Принципы

  • Простота: избегать чрезмерного проектирования, писать простой и понятный код;
  • Универсальность: предоставлять функции, необходимые для разработки общих бизнес-приложений;
  • Эффективность: повышать эффективность итераций бизнеса;
  • Стабильность: высокая тестируемость и покрытие кода, надёжность в реальной практике;
  • Надёжность: благодаря хорошо спроектированным базовым библиотекам, уменьшить вероятность ошибок;
  • Производительность: высокая производительность, но без чрезмерной оптимизации за счёт безопасности;
  • Масштабируемость: хороший дизайн интерфейса для расширения функциональности или добавления новых базовых библиотек;
  • Отказоустойчивость: проектирование с учётом отказов, высокая устойчивость к сбоям;
  • Инструментарий: включает множество инструментов, таких как генерация кэша, инструменты lint и т. д.;

Функции

  • APIs: коммуникация по протоколам HTTP/gRPC, определение через Protobuf;
  • Errors: определение кодов ошибок через Enum в Protobuf и создание инструментов для определения интерфейсов;
  • Metadata: стандартизация метаданных сервисов через Middleware в протоколах HTTP/gRPC;
  • Config: поддержка различных источников данных, объединение и выравнивание конфигураций, поддержка динамических конфигураций через Atomic;
  • Logger: стандартный интерфейс журнала, удобный для интеграции сторонних библиотек журналов, сбор журналов через fluentd;
  • Metrics: унифицированный интерфейс метрик, реализация различных систем метрик, встроенная интеграция с Prometheus;
  • Tracing: следование спецификации OpenTelemetry для реализации трассировки микросервисов;
  • Encoding: поддержка автоматического выбора кодировки содержимого на основе Accept и Content-Type;
  • Transport: универсальный транспортный уровень HTTP/gRPC, реализация унифицированных плагинов Middleware;
  • Registry: реализация унифицированного интерфейса реестра, возможность подключения к различным реестрам через плагины;
  • Validation: определение правил проверки через Protobuf, применимых к сервисам HTTP/gRPC.
  • SwaggerAPI: интеграция со сторонним плагином Swagger позволяет автоматически генерировать Swagger API json и запускать встроенный сервис Swaager UI.

Начало работы

Необходимое

Установка

Установка через go install:
go install github.com/go-kratos/kratos/cmd/kratos/v2@latest
kratos upgrade
Компиляция из исходного кода:
git clone https://github.com/go-kratos/kratos
cd kratos
make install

Создание сервиса

# Создание шаблона проекта
kratos new helloworld

cd helloworld
# Загрузка зависимостей проекта
go mod download

# Генерация шаблона proto
kratos proto add api/helloworld/helloworld.proto
# Генерация клиентского кода proto
kratos proto client api/helloworld/helloworld.proto
# Генерация серверного шаблона
kratos proto server api/helloworld/helloworld.proto -t internal/service

# Генерирование всех исходных кодов proto, wire и т.д.
go generate ./...

# Запуск программы
kratos run

Kratos Boot

import "github.com/go-kratos/kratos/v2"
import
``` ```
github.com/go-kratos/kratos/v2/transport/grpc
import "github.com/go-kratos/kratos/v2/transport/http"

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

app := kratos.New(
    kratos.Name("kratos"),
    kratos.Version("latest"),
    kratos.Server(httpSrv, grpcSrv),
)
app.Run()

Related

Community

WeChat Official Account

kratos

Conventional commits

Структура информации о коммите должна быть следующей:

<тип>[дополнительная область]: <описание>

[дополнительное тело]

[дополнительный нижний колонтитул (ы)]

Информация о коммитах должна соответствовать следующему формату: — fix: просто опишите проблему, которая была исправлена; — feat(log): простое описание новых функций; — deps(examples): простое описание изменений в зависимостях; — break(http): простое описание причин изменения, нарушающего работу кода.

Спонсоры и сторонники

kratos

Лицензия

Kratos лицензирован по MIT. Подробнее см. в файле LICENSE.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/haylim-kratos.git
git@api.gitlife.ru:oschina-mirror/haylim-kratos.git
oschina-mirror
haylim-kratos
haylim-kratos
main