Документация RecipientOFQuotes-Worker

Документация RecipientOFQuotes-Worker

Обзор документации

Эта папка содержит подробную техническую документацию для проекта RecipientOFQuotes-Worker — высокопроизводительной системы для автоматизации торговых стратегий с использованием AI/ML технологий.

📚 Основная документация

📖 Общий обзор

Архитектура и интеграция

AI/ML компоненты

Мониторинг и производительность

Хранилища и миграции

🏗️ Архитектура системы

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_URLURL RabbitMQamqp://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 — добавляйте метрики и логирование

Добавление нового сервиса

  1. Создайте пакет в internal/services/
  2. Реализуйте интерфейсы из internal/model/
  3. Зарегистрируйте в ServiceContainer
  4. Добавьте метрики и алерты
  5. Напишите тесты

📞 Контакты и поддержка

  • Issues: Создавайте issues для багов и предложений
  • Pull Requests: Приветствуются улучшения и новые функции
  • Documentation: Помогайте улучшать документацию

RecipientOFQuotes-Worker — высокопроизводительная система для автоматизации торговых стратегий с использованием AI/ML технологий.