GH GambleHub

Обработка сигналов в реальном времени

1) Назначение и бизнес-ценность

Real-time поток нужен, чтобы реагировать «здесь и сейчас»:
  • Антифрод/AML: структурирование депозитов, «муллирование», velocity-атаки.
  • Responsible Gaming (RG): превышение лимитов, риск-паттерны поведения.
  • Риск/Комплаенс: санкционный скрининг при регистрации/транзакции в онлайне.
  • Персонализация: триггеры бонусов/миссий, реактивные кампании.
  • Операции/SRE: деградации SLA, шквалы ошибок, аномалии метрик.

Ключевые цели: низкая задержка (p95 0.5–5 с), высокая полнота (≥99.5%), устойчивость к всплескам.

2) Таксономия сигналов

Транзакционные: `payment.deposit/withdraw/chargeback`.
Игровые: `game.bet/payout`, `game.session_start/stop`.
Аутентификация: `auth.login/failure`, смена устройств/гео.
Поведенческие: скорость ставок, экспоненциальный рост суммы, ночная активность.
Операционные: `api.latency`, `error.rate`, «шторма» перезапусков подов.

Каждый тип имеет схему, владелца (domain owner), критичность, SLO и правила «late data».

3) Эталонная архитектура real-time контура

1. Ingest и шина: HTTP/gRPC → Edge → Kafka/Redpanda (партиционирование по `user_id/tenant`).
2. Streaming-движок: Flink/Spark Structured Streaming/Beam; stateful-операторы, CEP.
3. Онлайн-обогащение: lookup-таблицы (Redis/Scylla/ClickHouse Read-Only), кеш провайдеров (санкции/KYC).

4. Синки:
  • Алерт-топики/кью (case-менеджмент, SOAR).
  • Фичестор онлайн (скоринг моделей).
  • Gold-стрим-витрины (оперативные дашборды).
  • «Теплое» хранилище для быстрой аналитики (ClickHouse/Pinot/Druid).
  • 5. Архив/форензика: неизменяемое складывание в Lake (Parquet, time-travel).
  • 6. Наблюдаемость: трейсинг/метрики/логи + lineage.

4) Окна, watermarks и «late data»

Виды окон:
  • Tumbling: фиксированные окна (напр., 1 мин) — простые агрегаты.
  • Hopping: перекрывающиеся (напр., шаг 30 с, окно 2 мин) — «гладкие» метрики.
  • Session: разрывы по неактивности — поведенческий анализ.
  • Watermarks: граница «знания о времени» для event-time; допускаем опоздание (allowed lateness, напр., 2 мин).
  • Стратегии запоздалых: доэмиссия корректировок, приписка «late=true», DLQ.

5) Stateful-операторы и дедупликация

Ключевание: по `user_id`, `payment.account_id`, `device_id`.
Состояние: сумматоры, скользящие счетчики, bloom-фильтры для idempotency.
Дедуп: хранение `(event_id, seen_at)` в state/kv; TTL = 24–72 ч.
Exactly-Once: транзакционные sink’и (2-phase), идемпотентные upsert-операции.

6) Обогащение потока

Lookup-джойны: лимиты RG, риск-скор пользователя, уровень KYC, гео/ASN.
Асинхронные вызовы: санкционный реестр/антифрод-провайдеры (async I/O, таймауты и fallback).
Нормализация валют/таймзон: унификация к UTC и базовой валюте; фиксировать `fx_source`.

7) CEP: обнаружение сложных паттернов

Примеры правил:
  • Structuring: ≥3 депозита за 10 мин, каждый < порога отчетности, суммарно > X.
  • Device-switch: 3 разных устройства за 15 мин + смена IP/ASN.
  • RG-fatigue: суммарные ставки за 1 час > лимита + проигрыш ≥ Y.
  • Ops-storm: p95 latency > 2×базовой, 5xx > 3% в 5-мин окне.

CEP удобно выразить в Flink CEP/SQL или библиотеках шаблонов событий.

8) Онлайн-фичи и модели

Feature pipelines: счетчики, velocity-метрики, «время с последнего события», share-of-wallet.
Согласованность online/offline: одна кодовая база трансформаций; тесты репроходимости.
Скоринг: лайт-модели (логит/GBDT) синхронно; тяжелые — асинхронно через очередь.
Контроль дрейфа: PSI/KS и алерты; «темные запуски» для новых моделей.

9) Гарантии доставки и порядок

At-least-once в шине + идемпотентность на приеме.
Партиционирование по ключу обеспечивает локальный порядок.
Retries & backpressure: экспоненциальные ретраи с jitter, автоматический контроль давления.

10) SLO/SLI (рекомендуемые)

ПоказательЦель
p95 end-to-end latency (ingest → alert)≤ 2 с (крит.), ≤ 5 с (некрит.)
Completeness за окно T≥ 99.5%
Ошибки схем/валидаторов≤ 0.1% событий
Доля событий с trace_id≥ 98%
Alert precision / recall (цели по домену)≥ 0.8 / ≥ 0.7
Доступность стрим-сервиса≥ 99.9%

11) Наблюдаемость real-time контура

Метрики пайплайна: throughput, lag per partition, busy time, checkpoint duration.
Качество сигналов: completeness, duplication rate, late ratio.
Дашборды: тепловая карта лагов по топикам, алерт-воронка (событие→правило→кейс), карта горячих ключей.
Трейсинг: связывать алерт с исходными событиями (trace_id).

12) Безопасность и приватность

PII-минимизация: токенизация идентификаторов, маскирование чувствительных полей.
Geo-residency: региональные конвейеры (EEA/UK/BR).
Аудит: неизменяемые логи решений (кто, что, почему), Legal Hold для кейсов.
Доступ: RBAC к правилам/моделям, двойной контроль на выкаты.

13) Стоимость и производительность

Горячие ключи: перераспределение (key salting), composite keys.
Состояние: разумные TTL, инкрементальная материализация, RocksDB-тюнинг.
Окна: оптимальные размеры и allowed lateness; слои pre-aggregation для «шумных» потоков.
Сэмплирование: на некритичных потоках и на уровне метрик (не на транзакциях/комплаенсе).

14) Примеры (упрощенно)

Flink SQL — structuring депозитов (10-мин окно, step 1 мин):
sql
CREATE VIEW deposits AS
SELECT user_id, amount, ts
FROM kafka_deposits
MATCH_RECOGNIZE (
PARTITION BY user_id
ORDER BY ts
MEASURES
FIRST(A. ts) AS start_ts,
SUM(A. amount) AS total_amt,
COUNT() AS cnt
ONE ROW PER MATCH
AFTER MATCH SKIP PAST LAST ROW
PATTERN (A{3,})
WITHIN INTERVAL '10' MINUTE
) MR
WHERE total_amt > 500 AND cnt >= 3;
Псевдокод анти-velocity по ставкам:
python key = event. user_id window = sliding(minutes=5, step=30)   # hopping window count = state. counter(key, window)
sum_amt = state. sum(key, window)
if count > 30 or sum_amt > THRESH:
emit_alert("RG_VELOCITY", key, snapshot(state))
Дедуп по event_id (Kafka Streams):
java if (!kvStore.putIfAbsent(event. getId(), now())) {
forward(event); // unseen -> process
}

15) Процессы и RACI

R (Responsible): Streaming Platform (инфра, состояние, релизы), Domain Analytics (правила/фичи).
A (Accountable): Head of Data / Risk / Compliance по своим доменам.
C (Consulted): DPO/Legal (PII/retention), SRE (SLO/инциденты), Архитектура.
I (Informed): Продукт/Поддержка/Маркетинг.

16) Дорожная карта внедрения

MVP (2–4 недели):

1. 2–3 критичных сигнала (например, `payment.deposit`, `auth.login`, `game.bet`).

2. Kafka + Flink, базовый дедуп и watermark; одна CEP-правила для антифрода и одна — для RG.

3. ClickHouse/Pinot для оперативных витрин; дашборды lag/completeness.

4. Инцидент-канал (webhook/Jira) и ручной triage.

Фаза 2 (4–8 недель):
  • Онлайн-фичестор, скоринг лайт-модели; асинхронные lookups (санкции/KYC).
  • Управление правилами как кодом, канареечные выкаты, A/B правил.
  • Регионализация и PII-контроли, Legal Hold для кейсов.
Фаза 3 (8–12 недель):
  • Каталог сигналов, автогенерация документации, симулятор «replay & what-if».
  • Автокалибровка порогов (Bayesian/quantile), метрики precision/recall в онлайне.
  • DR-учения, multi-region active-active, chargeback моделей по командам.

17) Чек-лист качества перед продом

  • Схемы и контракты, валидация в ingest.
  • Настроены окна, watermarks, allowed lateness + DLQ.
  • Дедуп и идемпотентные sink’и.
  • Метрики lag/throughput/state size, алерты SLO.
  • Безопасность: RBAC на правила/модели, маскирование PII.
  • Документация: owner, SLO, примеры, карты зависимостей.
  • Процедуры rollback и фриз-кнопка.

18) Частые ошибки и как их избежать

Игнор event-time: используйте watermarks, иначе «сползут» метрики.
Нет дедупа: дубликаты дадут ложные алерты → введите idempotency.
Горячие ключи: перекос партиций → salting/resharding.
Слишком жесткие окна: потеря запоздалых → allowed lateness + корректирующие эмиссии.
Смешение PII: разделяйте токенизацию и аналитический поток.
Нет симулятора: тестируйте правила на «реплее» перед выкатыванием.

19) Глоссарий (кратко)

CEP — Complex Event Processing, обнаружение паттернов.
Watermark — порог времени для готовности окна.
Allowed Lateness — допуск опоздавших событий.
Stateful Operator — оператор со стойким состоянием.
Feature Store — хранилище онлайн/офлайн признаков для ML.

20) Итог

Real-time обработка сигналов — это управляемый конвейер с четкими схемами, окнами и watermark’ами, stateful-логикой, онлайновым обогащением и строгими SLO. Следуя этим практикам, вы получаете быстрые и надежные детекторы рисков, устойчивые персонализационные триггеры и оперативные дашборды, которые масштабируются экономно и комплаентно.

Contact

Свяжитесь с нами

Обращайтесь по любым вопросам или за поддержкой.Мы всегда готовы помочь!

Начать интеграцию

Email — обязателен. Telegram или WhatsApp — по желанию.

Ваше имя необязательно
Email необязательно
Тема необязательно
Сообщение необязательно
Telegram необязательно
@
Если укажете Telegram — мы ответим и там, в дополнение к Email.
WhatsApp необязательно
Формат: +код страны и номер (например, +380XXXXXXXXX).

Нажимая кнопку, вы соглашаетесь на обработку данных.