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

OSCHINA-MIRROR/teamlint-baron

Клонировать/Скачать
README.md 6.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 16:25 fc356bf

Барон: фреймворк для разработки микросервисов

Барон — это фреймворк, который позволяет быстро создавать микросервисы на основе файлов protobuf с использованием библиотеки go-kit. Это позволяет разработчикам сосредоточиться на бизнес-логике и функциональности приложения.

Особенности:

  • Генерация кода для сервисов с учётом различий;
  • Поддержка генерации кода с помощью новых версий proton-gen-go и protoc-gen-go-grpc;
  • Поддержка протоколов gRPC и HTTP;
  • Поддержка протокола NATS;
  • Поддержка полей proto3 типа optional;
  • Поддержка типов данных из библиотек google/protobuf;
  • Поддержка protobuf 3;
  • Возможность создания документации;
  • Планы по поддержке gRPC Stream, инициализации сервера и других функций.

Установка:

  1. Установите инструмент для работы с протокольными буферами (protobuf).
  2. Установите плагины для protoc.
  3. Установите baron через команду go get.
  4. Выполните команду task install для компиляции и развёртывания.

Использование командной строки:

  • Имя команды: baron.
  • Команда помощи: baron -h.
  • Параметры:
    • -c, --client — генерация клиента сервиса;
    • -h, --help — вывод справки;
    • -s, --start — создание файла start.proto;
    • -d, --svcdef — вывод определения сервиса;
    • -o, --svcout — путь к пакету Go, где будет создан сервис;
    • -t, --transport — транспортный протокол сервиса (по умолчанию «all»);
    • -v, --verbose — подробный вывод;
    • -V, --version — версия программы.

Для использования сервиса необходимо выполнить следующие шаги:

  1. Инициализировать определение сервиса с помощью команды baron --start [outdir].
  2. Написать определение сервиса.
  3. Сгенерировать базовый код сервиса с помощью команды baron <имя файла>.
  4. Разработать бизнес-логику сервиса. ### baronGRPCClient.Status(ctx, &in)

if err != nil { log.Fatalf("[Baron.GRPCClient] Start.Status err=%v\n", err) } log.Printf("[Baron.GRPCClient] Start.Status result=%+v\n", *out) log.Println() }

HTTP 客户端调用

// Baron HTTP Client
log.Println("[HTTP][Start]")

// HTTP.Start.Status
{
  ctx := context.Background()
  var in pb.StatusRequest
  baronHTTPClient, err := pb.NewHTTPClient(httpAddr)
  if err != nil {
    log.Fatal(err)
  }
  out, err := baronHTTPClient.Status(ctx, &in)
  if err != nil {
    log.Fatalf("[Baron.HTTPClient] Start.Status err=%v\n", err)
  }
  log.Printf("[Baron.HTTPClient] Start.Status result=%+v\n", *out)
  log.Println()
}

NATS 客户端调用

// Baron NATS Client
log.Println("[NATS.Start]")
nc, err := nats.Connect(natsAddr)
if err != nil {
  log.Fatal(err)
}
defer nc.Close()
baronNATSClient, err := pb.NewNATSClient(nc)
if err != nil {
  log.Fatal(err)
}

// NATS.Start.Status
{
  ctx := context.Background()
  var in pb.StatusRequest
  out, err := baronNATSClient.Status(ctx, &in)
  if err != nil {
    log.Fatalf("[Baron.NATSClient] Start.Status err=%v\n", err)
  }
  log.Printf("[Baron.NATSClient] Start.Status result=%+v\n", *out)
  log.Println()
}

注意事项

  • HTTP 服务请求如果使用查询字符串传递复杂数据类型, 需要将字段值编码为JSON并做URL编码, 使用请求体传值可直接使用 исходные значения

Сервис определения

message EchoRequest {
    google.protobuf.StringValue json_str  = 6;
}

Использование URL-запроса для передачи значений

  • Преобразование параметров в JSON {"value":"Hello世界"}

  • Кодирование URL %7B%22value%22%3A%22Hello%E4%B8%96%E7%95%8C%22%7D

http://localhost:5050/echo?json_str=%7B%22value%22%3A%22Hello%E4%B8%96%E7%95%8C%22%7D

Использование HTTP Body для передачи значений

{
 "json_str": "Hello世界"
}

Известные проблемы

  • google/protobuf/struct.proto сгенерированные поля должны быть установлены со значениями, установка nil приводит к ошибке.

Ссылки

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

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

1
https://api.gitlife.ru/oschina-mirror/teamlint-baron.git
git@api.gitlife.ru:oschina-mirror/teamlint-baron.git
oschina-mirror
teamlint-baron
teamlint-baron
master