service-pkg
Набор утилит и мини‑фреймворков для сервисов на Go: аккуратный каркас приложения (graceful shutdown, обработка сигналов, рекавери), лидер‑элекция через Redis, планировщик задач, барьер готовности, обёртки для PostgreSQL и ClickHouse, HTTP (chi) и gRPC серверы с полезными мидлварами, логирование на базе zap, простые утилиты.
Цель — ускорить запуск продуктивных сервисов: «сшить» инфраструктурные куски в согласованный рантайм с безопасной остановкой и понятными контрактами.
Возможности
- Единая точка входа приложения: управление сигналами ОС (SIGTERM/SIGINT/SIGQUIT), список shutdown‑хуков с приоритетами, рекавери паник.
- Лидер‑элекция (Redis): надёжный цикл захвата/продления блокировки, уведомления о потере/получении лидерства.
- Планировщик задач: периодические job’ы c rate‑лимитом, дедлайнами и двумя режимами остановки (немедленная/мягкая).
- Барьер готовности: переключение ready/not‑ready по сигналам, безопасный жизненный цикл.
- PostgreSQL (pgxpool): обёртка с явной настройкой Min/MaxConns, TTL/idle, health‑check, application_name.
- ClickHouse: подключение с LZ4, политика
NeedReconnect/NeedWait по ошибкам, безопасный reconnect.
- HTTP (chi): мидлвары для логов, X‑Correlation‑ID, recover; аккуратный graceful shutdown.
- gRPC: сервер + interceptors (panic → Internal, лимит размера ответа, таймауты), reflection по флагу.
- Логирование (zap): унифицированные
WriteInfoLog/WriteWarnLog/WriteErrorLog/WriteFatalLog.
Быстрый старт
Ниже — минимальный каркас сервиса на базе application, server, scheduler и watchdog.
examples/cmd/run/main.go
Лицензия
См. файл LICENSE в репозитории.