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

OSCHINA-MIRROR/yllan-kratos

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

Кратос

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

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

Цели

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

Принципы

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

Функции

  • API: коммуникация основана на HTTP/gRPC, определение через Protobuf.
  • Ошибки: определение кодов ошибок через Enum в Protobuf и создание инструментов для определения интерфейсов.
  • Метаданные: стандартизация сервисной метаинформации через Middleware в HTTP/gRPC коммуникации.
  • Конфигурация: поддержка нескольких источников данных, объединение и выравнивание конфигурации, поддержка динамической конфигурации через Atomic.
  • Журнал: стандартный интерфейс журнала, легко интегрируется с сторонними библиотеками журналов и может собирать журналы через fluentd.
  • Метрики: унифицированный интерфейс метрик, позволяющий реализовать различные системы метрик, по умолчанию интегрирован с Prometheus.
  • Трассировка: следует спецификации OpenTelemetry для реализации трассировки микросервисных цепочек вызовов.
  • Кодирование: автоматическое определение кодирования содержимого на основе Accept и Content-Type.
  • Транспорт: универсальный транспортный уровень HTTP/gRPC для реализации унифицированных плагинов Middleware.
  • Реестр: реализация унифицированного интерфейса реестра, возможность подключаться к различным реестрам через плагины.
  • Проверка: единая проверка через Protobuf, применимая к сервисам HTTP/gRPC.
  • SwaggerAPI: интеграция сторонних плагинов Swagger для автоматической генерации Swagger API JSON и запуска встроенного сервиса Swagger UI.

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

Необходимое

  • Go.
  • Protoc.
  • Protoc-gen-go.

Установка

  • Установка через 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

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

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

Информация о фиксации должна соответствовать следующему формату:

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

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

kratos

Лицензия

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

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

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

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