feat(generator): откалиброван поток steady-stream генератора
- Зачем: - поток генератора должен соответствовать модели интенсивности и профилю сида перед реализацией состояния версии 2. - Что: - событийный бюджет тика переведён в рождения визитов через ожидаемую среднюю длину визита. - дефолты интенсивности и обычный docker-compose запуск синхронизированы с целевыми 30 событиями в минуту. - добавлены статистические проверки длины визита, воронки, новых пользователей, межсессионных пауз и долгого окна потока. - обновлены README, OPERATIONS и карточка задачи 05. - Проверка: - uv run --with-requirements generator/requirements.txt pytest generator/tests -q. - git diff --check.
This commit is contained in:
+10
-5
@@ -39,8 +39,8 @@ generator-service -> Kafka topics -> (потребители отдельно)
|
||||
- Публикуем постепенно, **короткими тиками** (по умолчанию каждые 5 секунд)
|
||||
- На каждом тике отправляем небольшую порцию сообщений
|
||||
- Держим целевую интенсивность `events/min` без крупных минутных batch:
|
||||
рассчитанный событийный бюджет тика планирует новые визиты и списывается по
|
||||
фактической длине этих визитов, а события выходят позже по своим
|
||||
рассчитанный событийный бюджет тика копится как бюджет рождения визитов через
|
||||
ожидаемую среднюю длину визита, а события выходят позже по своим
|
||||
запланированным меткам времени
|
||||
- Распределяем события по 4 топикам:
|
||||
- `browser_events`
|
||||
@@ -63,10 +63,10 @@ generator-service -> Kafka topics -> (потребители отдельно)
|
||||
|------------|----------|--------------|
|
||||
| `KAFKA_BOOTSTRAP_SERVERS` | Адрес Kafka | `kafka:29092` |
|
||||
| `GEN_TICK_SECONDS` | Интервал между тиками | `5` (1-10 сек рекомендуется) |
|
||||
| `GEN_LAMBDA_BASE_PER_MIN` | Базовая интенсивность (событий/мин) | `200` |
|
||||
| `GEN_LAMBDA_BASE_PER_MIN` | Базовая интенсивность (событий/мин) | `30` |
|
||||
| `GEN_JITTER_PCT` | Процент вариативности | `20` |
|
||||
| `GEN_MIN_EVENTS_PER_TICK` | Минимум событий за тик | `5` |
|
||||
| `GEN_MAX_EVENTS_PER_TICK` | Максимум событий за тик | `50` |
|
||||
| `GEN_MIN_EVENTS_PER_TICK` | Минимальный событийный бюджет тика | `1` |
|
||||
| `GEN_MAX_EVENTS_PER_TICK` | Максимальный событийный бюджет тика | `50` |
|
||||
| `GEN_MAX_SESSION_EVENTS` | Потолок длины одного визита, защита от петель | `30` |
|
||||
| `GEN_MAX_ACTIVE_SESSIONS` | Потолок одновременных активных визитов | `200` |
|
||||
| `GEN_POPULATION_MAX` | Потолок активной популяции пользователей | `300` |
|
||||
@@ -88,6 +88,11 @@ GEN_MIN_EVENTS_PER_TICK=50
|
||||
GEN_MAX_EVENTS_PER_TICK=500
|
||||
```
|
||||
|
||||
`GEN_MIN_EVENTS_PER_TICK` и `GEN_MAX_EVENTS_PER_TICK` задают нижнюю и верхнюю
|
||||
границы событийного бюджета тика. Этот бюджет сначала превращается в рождения
|
||||
визитов через среднюю длину визита, поэтому фактическое число отправленных
|
||||
событий в конкретном тике может отличаться.
|
||||
|
||||
## Управление через Makefile
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user