Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Набор преднастроенных библиотек для быстрого создания микро-сервисов на go.

License

NotificationsYou must be signed in to change notification settings

updevru/go-micro-kit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Набор преднастроенных бибилотек для быстрого создания микро-сервисов на go.

Набор инструментов создан для Schema-First подхода, когда описываются сервисы в формаетprotocol buffersформате и далее генерируется код этих сервисов.

Возможности

Bootstrap manager

Удобный запуск нескольких сервисов в одном приложении (например gRPC и HTTP API на разных портах).

API Gateway

Генерация gRPC API из protobuf и автоматическое создание HTTP API с помощьюgRPC-Gateway.

Configuration

Конфигурация на основе env переменных или .env файлов, это позволяет удобно запускать сервисы в виде контейнеров.

Cron

Простой функционал для запуска фоновых задач по расписанию.

Discovery

Автоматическая регистрация сервиса в системах service discovery (Consul).

Observability

Трассировка, метрики и логи в форметOpenTelemetry.

Установка

go get github.com/updevru/go-micro-kit

Генерация кода

Установка утилит:

$ go install \    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway \    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 \    google.golang.org/protobuf/cmd/protoc-gen-go \    google.golang.org/grpc/cmd/protoc-gen-go-grpc

Установленные утилиты должны находиться в папке, на которую указывает переменная окружения$GOBIN.

Пример генерации кода:

protoc -I proto .\proto\store\store.proto\  --go_out=./gen/ --go_opt=paths=source_relative --go-grpc_out=./gen/ --go-grpc_opt=paths=source_relative\  --grpc-gateway_out ./gen --grpc-gateway_opt paths=source_relative --grpc-gateway_opt generate_unbound_methods=true\  --openapiv2_out ./docs --openapiv2_opt allow_merge=true,merge_file_name=api

Команда генерирует весь необходимый go код, gRPC-Gateway и openapi спецификацию.

Примеры использования

main.go

funcmain() {// Единый context, который закрывается при завершении программыctx,stop:=signal.NotifyContext(context.Background(),os.Interrupt,syscall.SIGTERM)deferstop()// Инициализируем конфигурацию и наполняем структуру переменными окруженияvarcfg config.Configiferr:=configPkg.CreateConfig(ctx,&cfg);err!=nil {panic(err)}// Настройка OpenTelemetryotelShutdown,err:=telemetry.SetupOTelSDK(ctx)iferr!=nil {panic(err)}deferfunc() {err=errors.Join(err,otelShutdown(context.Background()))}()logger:=telemetry.CreateLogger()tracer:=telemetry.CreateTracer()meter:=telemetry.CreateMeter()// Создаем Bootstrap managerapp:=server.NewServer(ctx,logger,tracer,meter)// Инифализируем и добавляем gRPC сервисыapp.Grpc(&cfg.Grpc,func(g*grpc.Server) {pbStore.RegisterStoreServer(g)    })//Инициализируем и добавляем gRPC-Gateway, так же можем добавить дополнительные роутыapp.Http(&cfg.Http,&cfg.Grpc,func(ctx context.Context,mux*runtime.ServeMux,conn*grpc.ClientConn)error {return []server.HttpHandler{pbStore.RegisterStoreHandler,        }    })// Добавляем фоновые задачи по расписаниюapp.Cron([]server.CronTask{        {Name:"clock",Cron:"*/1 * * * *",Fn:func(ctx context.Context)error {// TODO: implement cron jobreturnnil            },        },    })// Добавляем автоматический service discoveryconsul,err:=discovery.NewConsul(&cfg.App,&cfg.Http,&cfg.Grpc)app.AddDiscovery(consul)// Запуск приложенияiferr:=app.Run();err!=nil {logger.ErrorContext(ctx,"Failed to run server: %v",err)panic(err)}}

Конфигурация приложения

Используются библиотекиgo-envconfig иgodotenv.

package configimport"github.com/updevru/go-micro-kit/config"typeConfigstruct {config.AppHttp config.Http`env:",prefix=HTTP_"`Grpc config.Grpc`env:",prefix=GRPC_"`Optionstring`env:"OPTION, default=value"`}

About

Набор преднастроенных библиотек для быстрого создания микро-сервисов на go.

Resources

License

Stars

Watchers

Forks

Languages


[8]ページ先頭

©2009-2025 Movatter.jp