Документация RecipientOFQuotes-Worker
Документация RecipientOFQuotes-Worker
Обзор документации
Эта папка содержит подробную техническую документацию для проекта RecipientOFQuotes-Worker — высокопроизводительной системы для автоматизации торговых стратегий с использованием AI/ML технологий.
📚 Основная документация
📖 Общий обзор
- Обзор проекта — полный обзор системы, архитектуры и компонентов
Архитектура и интеграция
- Руководство по интеграции — интеграция компонентов системы, ServiceContainer, жизненный цикл сервисов
- Worker Pool оптимизация — система управления воркерами, параллелизм, graceful shutdown
- Hot Reload и алерты — динамическая конфигурация, система алертов, мониторинг
AI/ML компоненты
- Аналитика для RL-агентов — сервис аналитики, технические индикаторы, обработка котировок
- Генетический алгоритм — оптимизация параметров, эволюционные стратегии, производительность
- Результаты A/B тестов — анализ производительности, метрики, оптимизация
- Meta Learning и Transfer Learning — продвинутые техники обучения, накопление знаний, перенос между задачами
Мониторинг и производительность
- Динамические алерты — система мониторинга, правила алертов, метрики
- Оптимальные проценты выборки — стратегии сэмплирования, производительность, рекомендации
Хранилища и миграции
- StateStorage и миграции — управление состояниями, отдельная БД, схемы PostgreSQL
- Миграции базы данных — управление схемой БД через golang-migrate, создание и применение миграций
🏗️ Архитектура системы
graph TB
subgraph "Внешние системы"
API[API бирж]
PG[(Postgres)]
CH[(ClickHouse)]
MQ[RabbitMQ]
end
subgraph "RecipientOFQuotes-Worker"
subgraph "Входные компоненты"
TW[TaskWorker]
Scheduler[Scheduler]
end
subgraph "Обработка данных"
DM[DataManager]
Analytics[AnalyticsService]
end
subgraph "AI/ML компоненты"
RL[RL Agent]
GA[Genetic Algorithm]
AB[AB Tests]
end
subgraph "Инфраструктура"
CB[Circuit Breaker]
Profiler[Profiler]
Alerts[AlertingService]
end
subgraph "Управление"
Config[Config Manager]
Health[Health Service]
end
end
API --> TW
PG --> DM
CH --> DM
MQ --> Scheduler
TW --> Analytics
Analytics --> RL
RL --> GA
GA --> AB
DM --> CB
CB --> Profiler
Profiler --> Alerts
Config --> Health🔄 Жизненный цикл системы
sequenceDiagram
participant Main as Main
participant Config as Config Manager
participant Services as Service Container
participant Data as Data Manager
participant RL as RL Agent
participant GA as Genetic Algorithm
participant Alerts as Alerting Service
Main->>Config: LoadConfig()
Config->>Services: ColdStart()
Services->>Data: Initialize()
Services->>RL: Initialize()
Services->>GA: Initialize()
Services->>Alerts: Initialize()
loop Runtime
Services->>Data: LoadData()
Data->>RL: ProcessQuotes()
RL->>GA: OptimizeParameters()
GA->>Alerts: CheckPerformance()
Alerts->>Services: SendAlerts()
end
Main->>Services: GracefulShutdown()📊 Метрики и мониторинг
Prometheus метрики
graph LR
subgraph "Метрики системы"
WP[Worker Pool]
RL[RL Agent]
GA[Genetic Algorithm]
CB[Circuit Breaker]
DM[Data Manager]
AL[Alerts]
end
subgraph "Экспорт"
Prometheus[Prometheus]
Grafana[Grafana]
end
WP --> Prometheus
RL --> Prometheus
GA --> Prometheus
CB --> Prometheus
DM --> Prometheus
AL --> Prometheus
Prometheus --> GrafanaОсновные метрики:
- Worker Pool:
workerpool_*— метрики пулов воркеров - RL Agent:
rl_agent_*— метрики RL-агентов - Genetic Algorithm:
ga_*— метрики генетического алгоритма - Circuit Breaker:
circuit_breaker_*— состояние circuit breakers - Data Manager:
data_manager_*— статистика управления данными - Alerts:
alerts_*— метрики системы алертов
🚀 Быстрый старт
Предварительные требования
# Установка зависимостей
go mod download
# Запуск PostgreSQL для котировок
docker run -d --name postgres-quotes \
-e POSTGRES_DB=quotes \
-e POSTGRES_USER=quotes \
-e POSTGRES_PASSWORD=1qazxsw2 \
-p 5432:5432 postgres:15
# Запуск ClickHouse для котировок (опционально, альтернатива PostgreSQL)
docker run -d --name clickhouse-quotes \
-e CLICKHOUSE_DB=quotes \
-e CLICKHOUSE_USER=default \
-e CLICKHOUSE_PASSWORD= \
-p 9000:9000 \
-p 8123:8123 \
clickhouse/clickhouse-server:latest
# Запуск RabbitMQ
docker run -d --name rabbitmq \
-e RABBITMQ_DEFAULT_USER=user \
-e RABBITMQ_DEFAULT_PASS=user \
-p 5672:5672 -p 15672:15672 rabbitmq:3-management
# Запуск PostgreSQL для StateStorage (отдельная БД для истории состояний)
docker run -d --name postgres-states \
-e POSTGRES_DB=ml_states \
-e POSTGRES_USER=states \
-e POSTGRES_PASSWORD=password \
-p 5433:5432 postgres:15
Запуск приложения
# Сборка
go build -o worker ./cmd
# Запуск
./worker
# Или через go run
go run ./cmd/main.go
Проверка работоспособности
# Health check
curl http://localhost:8080/health
# Метрики Prometheus
curl http://localhost:8080/metrics
# Профилирование
curl http://localhost:9080/debug/pprof/
🔧 Конфигурация
Основной файл конфигурации: configs/config.yaml
system_setup:
log_level: "info" # Уровень логирования
metrics_port: 8080 # Порт для метрик
pprof_port: 9080 # Порт для профилирования
worker_pool:
task_worker:
max_workers: 5 # Максимум воркеров
queue_size: 50 # Размер очереди
task_timeout: "30s" # Таймаут задач
ab_optimizer:
max_workers: 12 # Воркеры для оптимизации
queue_size: 200 # Очередь оптимизации
task_timeout: "1200s" # Таймаут оптимизации
storage:
postgres:
db_user: "quotes"
db_password: "1qazxsw2"
db_host: "localhost:5432"
db_name: "quotes"
clickhouse:
db_user: "default"
db_password: ""
db_host: "localhost:9000"
db_name: "quotes"
rabbitmq:
url: "amqp://user:user@localhost:5672/"
ab_tests:
enabled: true # Включить A/B тесты
exchange: "binance" # Биржа для тестов
pair: "TONUSDT" # Торговая пара
data_period: "24h" # Период данных
experiment:
id: "test_experiment"
parallelism: 5 # Параллелизм
ga:
generations: 20 # Поколения GA
population_size: 50 # Размер популяции
mutation_rate: 0.15 # Вероятность мутации
📋 Переменные окружения
| Переменная | Описание | По умолчанию |
|---|---|---|
LOG_LEVEL | Уровень логирования | info |
METRICS_PORT | Порт для метрик | 8080 |
PPROF_PORT | Порт для профилирования | 9080 |
DB_USER | Пользователь БД (Postgres) | quotes |
DB_PASSWORD | Пароль БД (Postgres) | 1qazxsw2 |
DB_HOST | Хост БД (Postgres) | localhost:5432 |
DB_NAME | Имя БД (Postgres) | quotes |
CLICKHOUSE_DB_USER | Пользователь БД (ClickHouse) | default |
CLICKHOUSE_DB_PASSWORD | Пароль БД (ClickHouse) | - |
CLICKHOUSE_DB_HOST | Хост БД (ClickHouse) | localhost:9000 |
CLICKHOUSE_DB_NAME | Имя БД (ClickHouse) | quotes |
RABBITMQ_URL | URL RabbitMQ | amqp://user:user@localhost:5672/ |
ENABLE_AB_TESTS | Включить A/B тесты | true |
AB_TEST_EXCHANGE | Биржа для тестов | binance |
AB_TEST_PAIR | Торговая пара | TONUSDT |
🛠️ Для разработчиков
Структура проекта
graph TB
subgraph "RecipientOFQuotes-Worker"
CMD[cmd/]
INT[internal/]
PKG[pkg/]
CFG[configs/]
DOCS[docs/]
subgraph "internal/"
ALERTS[alerts/]
CONFIG[config/]
HEALTH[health/]
MODEL[model/]
SERVICES[services/]
STORAGE[storage/]
subgraph "services/"
ANALYTICS[analytics/]
DATA[data/]
MESSAGING[messaging/]
RL_AGENT[rl_agent/]
AB_OPT[ab_optimizer/]
end
end
subgraph "pkg/"
AB_METRICS[abmetrics/]
ANALYTICS_METRICS[analyticsmetrics/]
CIRCUIT_BREAKER[circuitbreaker/]
DATA_METRICS[datametrics/]
HEALTH_METRICS[healthmetrics/]
LOGGER[logger/]
POSTGRES_METRICS[postgresmetrics/]
PROFILING[profiling/]
RL_METRICS[rlmetrics/]
UTILS[utils/]
WORKERPOOL[workerpool/]
end
end
CMD --> INT
INT --> SERVICES
INT --> STORAGE
SERVICES --> ANALYTICS
SERVICES --> DATA
SERVICES --> MESSAGING
SERVICES --> RL_AGENT
SERVICES --> AB_OPT
PKG --> AB_METRICS
PKG --> ANALYTICS_METRICS
PKG --> CIRCUIT_BREAKER
PKG --> DATA_METRICS
PKG --> HEALTH_METRICS
PKG --> LOGGER
PKG --> POSTGRES_METRICS
PKG --> PROFILING
PKG --> RL_METRICS
PKG --> UTILS
PKG --> WORKERPOOLПринципы разработки
- Dependency Injection — используйте DI для управления зависимостями
- Interface Segregation — создавайте специализированные интерфейсы
- Circuit Breaker Pattern — защищайте от сбоев внешних сервисов
- Graceful Shutdown — корректно завершайте работу сервисов
- Observability — добавляйте метрики и логирование
Добавление нового сервиса
- Создайте пакет в
internal/services/ - Реализуйте интерфейсы из
internal/model/ - Зарегистрируйте в
ServiceContainer - Добавьте метрики и алерты
- Напишите тесты
📞 Контакты и поддержка
- Issues: Создавайте issues для багов и предложений
- Pull Requests: Приветствуются улучшения и новые функции
- Documentation: Помогайте улучшать документацию
RecipientOFQuotes-Worker — высокопроизводительная система для автоматизации торговых стратегий с использованием AI/ML технологий.