Обработка сигналов в реальном времени
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).
- Алерт-топики/кью (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 (рекомендуемые)
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 для кейсов.
- Каталог сигналов, автогенерация документации, симулятор «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. Следуя этим практикам, вы получаете быстрые и надежные детекторы рисков, устойчивые персонализационные триггеры и оперативные дашборды, которые масштабируются экономно и комплаентно.