feat(infra): добавлен автономный генератор событий для Kafka
- Зачем: - нужен постоянный поток данных для демонстрации работы стека - текущий batch-загрузчик не позволяет показать streaming-сценарии - Что: - добавлен сервис generator с режимом steady (Poisson-интенсивность) - генератор публикует в 4 топика: browser/location/device/geo_events - сохраняются связи event_id и click_id между событиями - сборка через uv для скорости и компактности образа - добавлены команды generator-* в Makefile - комплексные тесты: валидация, статистика, формат сообщений - Проверка: - `docker run --rm -v $(pwd)/..:/workspace -w /workspace/generator generator:test python test_comprehensive.py` — 8/8 тестов - `make generator-up` — 3 тика без ошибок, отправлено 2904 сообщения
This commit is contained in:
@@ -284,6 +284,37 @@ services:
|
||||
postgres-metadata:
|
||||
condition: service_healthy
|
||||
|
||||
# Генератор событий (автономный стриминг в Kafka)
|
||||
generator:
|
||||
build:
|
||||
context: ./generator
|
||||
dockerfile: Dockerfile
|
||||
environment:
|
||||
KAFKA_BOOTSTRAP_SERVERS: kafka:29092
|
||||
GEN_TICK_SECONDS: "60"
|
||||
GEN_LAMBDA_BASE_PER_MIN: "200"
|
||||
GEN_JITTER_PCT: "20"
|
||||
GEN_MIN_EVENTS_PER_TICK: "50"
|
||||
GEN_MAX_EVENTS_PER_TICK: "500"
|
||||
GEN_DATA_DIR: /data
|
||||
GEN_ENABLED: "true"
|
||||
CLICKHOUSE_HOST: clickhouse
|
||||
CLICKHOUSE_PORT: "9000"
|
||||
# PYTHONUNBUFFERED для сразу видеть логи
|
||||
PYTHONUNBUFFERED: "1"
|
||||
volumes:
|
||||
- ./data:/data:ro
|
||||
networks:
|
||||
- cs_dwh
|
||||
depends_on:
|
||||
- kafka
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "python", "-c", "import sys; sys.exit(0)"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
# Kafka Exporter для мониторинга через Prometheus
|
||||
kafka-exporter:
|
||||
image: danielqsj/kafka-exporter:v1.9.0
|
||||
|
||||
Reference in New Issue
Block a user