GH GambleHub

Streaming und Streaming Analytics

1) Zweck und Wert

Die Streaming-Schaltung sorgt dafür, dass Entscheidungen „on the fly“ getroffen werden:
  • Anti-Fraud/AML: Identifizierung der Strukturierung von Einlagen, Velocity-Attacken, Anomalien der Anbieter.
  • Responsible Gaming (RG): Überschreitung von Limits, Risikomuster, Selbstausschlüsse.
  • Operationen/SRE: SLA-Degradation, Fehlerspitzen, frühe Incident-Signale.
  • Produkt/Marketing: Personalisierungsereignisse, Missionen/Quests, Echtzeit-Segmentierung.
  • Near-Real-Time Reporting: GGR/NGR Schaufenster, Bedienfelder.

Zielmerkmale: p95 Ende-zu-Ende 0. 5-5 s, Vollständigkeit ≥ 99. 5%, überschaubare Kosten.


2) Referenzarchitektur

1. Ingest/Edge

`/events/batch` (HTTP/2/3), gRPC, OTel Collector.
Validierung von Schemata, Anti-Duplikate, Geo-Routing.

2. Ereignisbus

Kafka/Redpanda (Partitionierung nach „user _ id/tenant/market“).
Retention 3-7 Tage, Kompression, DLQ/„ Quarantäne “für„ gebrochene “Nachrichten.

3. Streaming-Verarbeitung

Flink / Spark Structured Streaming / Beam.
Stateful-Operatoren, CEP, Wasserzeichen, zulässige Latenz, Deduplizierung.
Anreicherung (Redis/Scylla/ClickHouse-Lookup), asynchrone I/O mit Timeouts.

4. Serving/Einsatzvitrinen

ClickHouse/Pinot/Druid für Minuten-/Sekundenaggregation und Dashboards.
Feature Store (online) für das Scoring von Modellen.
Alert-Topics → SOAR/Ticketing/Webhooks.

5. Langzeitlagerung (Lakehouse)

Bronze (raw), Silver (clean), Gold (serve) — Parquet + Delta/Iceberg/Hudi.
Replika/Backtests, Zeitreisen.

6. Beobachtungsstand

Pipline-Metriken, Tracing (OTel), Protokolle, Lineage.


3) Systeme und Verträge

Schema-first: JSON/Avro/Protobuf + Registry, 'schema _ version' in jedem Event.
Evolution: rückwärtskompatibel - neue nullbare Felder; breaking - '/v2'+ Doppelveröffentlichung.
Erforderliche Felder: 'event _ time' (UTC), 'event _ id', 'trace _ id', 'user. pseudo_id`, `market`, `source`.


4) Fenster, Wasserzeichen und verspätete Daten

Fenster:
  • Tumbling (fest), Hopping (überlappend), Session (durch Inaktivität).
  • Wasserzeichen: Schwelle des „Wissens“ nach Ereigniszeit; zum Beispiel 2-5 Minuten.
  • Späte Daten: Voremission von Anpassungen, „late = true“, DLQ bei starkem Rückstand.
Beispiel Flink SQL (10 min velocity Einzahlungen):
sql
SELECT user_id,
TUMBLE_START(event_time, INTERVAL '10' MINUTE) AS win_start,
COUNT() AS deposits_10m,
SUM(amount_base) AS sum_10m
FROM stream.payments
GROUP BY user_id, TUMBLE(event_time, INTERVAL '10' MINUTE);

5) Stateful-Aggregationen und KEP

Schlüsselwort: 'user _ id', 'device _ id', 'payment. account_id`.
Status: gleitende Summen/Zähler, Sitzungen, Bloom-Filter für Deduplex.
CEP-Muster: Strukturierung (<Schwelle, ≥N Mal, pro T-Fenster), Device-Switch, RG-Fatigue.

CEP Pseudocode:
python if deposits.count(last=10MIN) >= 3 and deposits.sum(last=10MIN) > THRESH and all(d.amount < REPORTING_THRESHOLD):
emit_alert("AML_STRUCTURING", user_id, window_snapshot())

6) Exactly-Once, Ordnung und Idempotenz

Bus: at-least-once + Partitionierungsschlüssel sorgen für lokale Ordnung.
Idempotenz: 'event _ id' + dedup state (TTL 24-72 h).
Sink: Transaktionskommits (2-Phase) oder Upsert/Merge-Idempotenz.
Outbox/Inbox: Garantierte Veröffentlichung von Domain-Events aus OLTP.


7) Anreicherung in Echtzeit

Lookup: Redis/Scylla (RG-Limits, KYC-Status, BIN→MCC, IP→Geo/ASN).
Asynchrone Aufrufe: sanktionierte/RER APIs mit Timeouts und Fallback („unknown“).
FX/Zeitzone: Normalisierung der Beträge und lokale Marktzeiten („fx _ source“, „tz“).


8) Serving und Echtzeit-Schaufenster

ClickHouse/Pinot/Druid: Aggregationen nach Minute/Sekunde, materialisierte Ansichten.
Gold-Stream: GGR/RG/AML Operationstabellen, SLA für Latenz ≤ 1-5 min.
API/GraphQL: geringe Latenz für Dashboards und externe Integrationen.

Beispiel ClickHouse (GGR pro Minute):
sql
CREATE MATERIALIZED VIEW mv_ggr_1m
ENGINE = AggregatingMergeTree()
PARTITION BY toDate(event_time)
ORDER BY (toStartOfMinute(event_time), market, provider_id) AS
SELECT toStartOfMinute(event_time) AS ts_min,
market,
provider_id,
sumState(stake_base) AS s_stake,
sumState(payout_base) AS s_payout
FROM stream.game_events
GROUP BY ts_min, market, provider_id;

9) Beobachtbarkeit und SLO

SLI/SLO (Benchmarks):
  • p95 ingest→alert ≤ 2 s (kritisch) ≤ 5 s (Rest).
  • Die Vollständigkeit des Fensters T ≥ 99. 5%.
  • Schaltungsfehler ≤ 0. 1%; Der Anteil der Ereignisse mit 'trace _ id' ≥ 98%.
  • Verfügbarkeit des Streamingdienstes ≥ 99. 9%.
Dashboards:
  • Lags durch Parteien/Spitzen, busy Zeit der Betreiber, die Größe des Zustandes.
  • Trichter „sobytiye→pravilo→keys“, Karte der „heißen“ Schlüssel, late-ratio.
  • Kosten: Kosten/GB, Kosten/Abfrage, Kosten für Checkpoints/Replikate.

10) Datenschutz und Compliance

PII-Minimierung: ID-Pseudonymisierung, Feldmaskierung, PAN/IBAN-Tokenisierung.
Datenresidenz: regionale Pipelines (EEA/UK/BR), separate Verschlüsselungsschlüssel.
Legal Operations: DSAR/RTBF auf Downstream-Schaufenstern, Legal Hold für Fälle/Berichte.
Audit: Zugriffsprotokolle, unveränderliche Entscheidungsarchive.


11) Wirtschaft und Produktivität

Schlüssel und Sharding: Vermeiden Sie „heiße“ Schlüssel (Salting/Composite Key).
Zustand: vernünftige TTLs, Schnappschüsse, RocksDB/State Backend Tuning.
Voraggregation: Up-Front-Reduce für laute Ströme.
Sampling: auf unkritischen Metriken zulässig (nicht auf Transaktionen/Compliance).
Chargeback: Budgets für Themen/Jobs, Quoten und Allokation nach Team.


12) Streaming DQ (Qualität)

Ingest-Validierung (schema, enums, size), dedup'(event_id, source)'.
Am Stream: completeness/dup-rate/late-ratio, Fenstersteuerung (keine Doppelzählung).
Reaktionsrichtlinien: kritisch → DLQ + alert; major/minor → Tag und anschließende Reinigung.

Mindestregeln (YAML, Beispiel):
yaml stream: payments rules:
- name: schema_valid type: schema severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
- name: dedup_window type: unique keys: [event_id]
window_minutes: 1440

13) Zugangssicherheit und Freigabekontrolle

RBAC/ABAC: separate Rollen zum Lesen von Threads, Ändern von Regeln/Modellen.
Dual Control: Ausrollen von Regeln und Modellen über „2 Schlüssel“.
Canary/A/B: Dunkle Regel- und Modellläufe, Precision/Recall-Steuerung.
Geheimnisse: KMS/CMK, regelmäßige Rotation, Verbot von Geheimnissen in Protokollen.


14) Prozesse und RACI

R (Responsible): Streaming Platform (infra/releases), Domain Analytics (rules/fici), MLOps (scoring).
A (Accountable): Head of Data/Risk/Compliance für Domains.
C (konsultiert): DPO/Legal (PII/retention), SRE (SLO/incidents), Architektur.
I (Informed): Produkt, Unterstützung, Marketing, Finanzen.


15) Fahrplan für die Umsetzung

MVP (2-4 Wochen):

1. Kafka/Redpanda + zwei kritische Topics ('payments', 'auth').

2. Flink-Joba mit Wasserzeichen, Deduplizierung und einer CEP-Regel (AML oder RG).

3. ClickHouse/Pinot Schaufenster 1-5 min, Dashboards lag/completeness.

4. Incident Channel (Webhooks/Jira), Basis-SLOs und Alerts.

Phase 2 (4-8 Wochen):
  • Online-Anreicherung (Redis/Scylla), Feature Store, asynchrone Lookups.
  • Regeln als Code verwalten, kanarische Freigaben, A/B
  • DQ-Streaming, Regionalisierung von Pipelines, DSAR/RTBF-Verfahren.
Phase 3 (8-12 Wochen):
  • Multi-Region aktiv-aktiv, Replay-Simulator „what-if“, Autokalibrierung von Schwellen.
  • Komplette Gold-Stream-Vitrinen (GGR/RG/AML), Near-Real-Time Reporting.
  • Value Dashboards, Chargeback, DR-Übungen.

16) Beispiele (Fragmente)

Flink CEP — device switch:
sql
MATCH_RECOGNIZE (
PARTITION BY user_id
ORDER BY event_time
MEASURES
FIRST(A.device_id) AS d1,
LAST(B.device_id) AS d2,
COUNT() AS cnt
PATTERN (A B+)
DEFINE
B AS B.device_id <> PREV(device_id) AND B.ip_asn <> PREV(ip_asn)
) MR
Kafka Streams - idempotenter Filter:
java if (seenStore.putIfAbsent(eventId, now()) == null) {
context.forward(event);
}

17) Checkliste vor dem Verkauf

  • Schemes and contracts in Registry, back-compat tests green.
  • Wasserzeichen/zulässige Latenz, Dedup und DLQ enthalten.
  • SLO und Alerts sind konfiguriert (lag/late/dup/state size).
  • Anreicherung mit Caches und Timeouts, Fallback „unbekannt“.
  • RBAC/dual-control auf Regeln/Modellen, alle Änderungen werden protokolliert.
  • Dokumentation von Regeln, Vitrinen und Runbook 'und Replay/Rollback.

18) Häufige Fehler und wie man sie vermeidet

Event-Zeit ignorieren: Ohne Wasserzeichen „schwimmen“ die Metriken.
Kein Deduplex: falsche Alerts und doppelte Buchführung.
Hot Keys: Verzerrung der Parteien → Salting/Resharding.
Synchrone externe APIs im Hot-Path: nur async + Cache.
Unüberschaubare Kosten: Voraggregationen, TTL-Zustände, Quoten, Kosten-Dashboards.
Kein Simulator: Rollouts ohne „replay“ führen zu Regressionen.


19) Glossar (kurz)

CEP - Complex Event Processing (Ereignismuster).
Watermark ist die Grenze der Ereigniszeit-Fensterbereitschaft.
Allowed Lateness - Zulassung von verspäteten Ereignissen.
Stateful Operator ist ein Operator mit einem gespeicherten Status.
Feature Store - Konsistentes Feature-Serving (online/offline).


20) Das Ergebnis

Streaming und Streaming Analytics sind ein überschaubares System: Verträge, Fenster und Wasserzeichen, stateful-Logik und KEP, Anreicherung und Echtzeit-Schaufenster, SLO und Beobachtbarkeit, Privatsphäre und Kosten unter Kontrolle. Nach den beschriebenen Praktiken erhält die Plattform zuverlässige Risikodetektoren, Bedienpanels und Personalisierung mit vorhersehbarer Latenz und Kosten.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.