logistic-pack-api

module
v0.0.0-...-a450fc5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2026 License: MIT

README

Проект выполнен в рамках курса Route256 2021 OZON

Репозиторий с заданиями

https://github.com/ozonmp/omp-docs

О проекте

Проект включает в себя помимо настоящего репозиториия, ещё три:

gRPC-server

Проект, представленный в данном репозитории, является gRPC-server'ом, который объединяет три проекта указанных выше.

API

Protobuf контракт API описан в api\logisticPack\logistic_pack_api\v1\logistic_pack_api.proto, предоставляет CRUD-методы. Код grpc объектов, методов, валидации вынесен в отдельный модуль pkg\logistic-pack-api.

В обработчиках запросов имеется возможность поднять уровень логирования с помощью метаданных запроса. Для этого необходимо передать по ключу "grpc-metadata-log-level" значение "debug" или другой иной уровень логирования.

Repository

Данные хранятся в Postgres. Методы пакета internal/repo повторяют методы internal/api, однако, при этом, реализуют паттерн transactional outbox. Помимо изменения основной таблицы, хранящей записи о сущностях домена pack, при выполнении CUD-методов добавляется запись в таблицу packs_events, описывающая произошедшие изменения.

Текст SQL-запросов собирается с помощью squirell.

Миграции

Миграции описаны в migrations.

Индексы созданы:

  • на столбцах id, removed в таблице packs, поскольку по нему идут условия WHERE в запросах Get, Remove, Update;
  • на столбце id в таблице packs_events, поскольку по нему идёт условие WHERE в запросах ретранслятора (см. О проекте).

Метрики

Сервис собирает метрики с помощью Prometheus.

Метрики gRPC-server'a

grpc-сервер собирает две метрики:

  • totalPackNotFound Counter — общее количество NotFound событий;
  • totalPackCUDEvents Counter — общее количество CUD событий.

Метрики grpc-сервера доступны на :9100/metrics.

Grafana и Prometheus

С заданным интервалом Prometheus считывает метрики сервисов. Метрики запрашиваются Grafan'ой и отображаются на графике: logistic_pack_api_not_found_total и logistic_pack_api_cud_found_total — рассчитывая количество происходящих событий в секунду в окне в 1 минуту.

Grafana доступна на :3000.

Jaeger

Обработчики запросов gRPC-server'a записывает трейсы и отправляет их в Jaeger. Трейсы имеют вложенные спаны методов репозиторя и SQL-запросов.

Jaeger доступен на :16686.

Docker

Описаны докерфайлы для образов gRPS-server'a.

Makefile

В мейкфайле описаны команды для локального запуска приложения, для генерации protobuf модулей с помощью утилиты buf, сборки докер-образов, и их запуска.

Directories

Path Synopsis
cmd
grpc-server command
internal
api
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL