GH GambleHub

Streaming și streaming analytics

1) Scop și valoare

Circuitul de streaming oferă luarea deciziilor on-the-fly:
  • Antifraudă/LMA: identificarea structurării depozitelor, atacurilor de viteză, anomaliilor furnizorilor.
  • Joc Responsabil (RG): depășirea limitelor, tipare de risc, auto-excludere.
  • Operațiuni/SRE: degradarea SLA, explozii de eroare, semnale incidente timpurii.
  • Produs/marketing: evenimente de personalizare, misiuni/misiuni, segmentare in timp real.
  • Raportare aproape în timp real: vitrine GGR/NGR, panouri de operare.

Caracteristici țintă: p95 end-to-end 0. 5-5 s, completitudine ≥ 99. 5%, valoare gestionată.


2) Arhitectura de referință

1. Ingerează/muchie

'/events/batch '(HTTP/2/3), gRPC, OTel Collector.
Validarea schemelor, anti-duplicate, geo-rutare.

2. Eveniment autobuz

Kafka/Redpanda (partiționat de 'user _ id/chiriaș/piață').
Retenție 3-7 zile, compresie, DLQ/” carantină„ pentru mesaje ”rupte„.

3. Streaming

Flink/scânteie structurat Streaming/fascicul.
Declarații statutare, CEP, filigran, întârziere permisă, eliminare a duplicatelor.
Îmbogățire (Redis/Scylla/ClickHouse-Lookup), asincron I/O cu timeout.

4. Afişaje de servire/operaţionale

ClickHouse/Pinot/Druid pentru agregare minut/secundă și tablouri de bord.
Feature Store (online) pentru modelele de notare.
Alertează subiectele → SOAR/ticketing/webhooks.

5. Depozitare pe termen lung (Lakehouse)

Bronz (brut), Argint (curat), Aur (servit) - Parchet + Delta/Iceberg/Hudi.
Replay/backtests, călătorie în timp.

6. Observabilitate

Măsurarea conductelor, urmărirea (OTel), busteni, descendență.


3) Scheme și contracte

Schema-first: JSON/Avro/Protobuf + Registry, 'schema _ version' în fiecare eveniment.
Evolution: back-compatibil - noi domenii nullable; breaking - '/v2 '+ dublă publicare.
Câmpurile obligatorii sunt 'event _ time' (UTC), 'event _ id',' trace _ id', 'user. pseudo_id', „piaţă”, „sursă”.


4) Ferestre, filigrane și date târzii

Ferestre:
  • Tumbling, hopping, sesiune.
  • Filigran: eveniment-timp „cunoștințe” prag; de exemplu, 2-5 minute.
  • Date târzii: ajustări pre-emitere, „târziu = adevărat”, DLQ cu un decalaj puternic.
Flink SQL exemplu (10-min viteza de depunere):
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) Agregări statale și CEP

Cheie: 'user _ id',' device _ id', 'payment. account_id'.
Stare: sume/contoare glisante, sesiuni, filtre de înflorire pentru eliminarea duplicatelor.
Modele CEP: structurare (<prag, ori ≥N, pe fereastră T), dispozitiv-switch, oboseală RG.

Cod pseudo CEP:
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) Exact-o dată, ordine și idempotence

Autobuz: cel puțin o dată + chei de partiție oferă ordine locală.
Idempotence: 'event _ id' + stare dedup (TTL 24-72 h).
Chiuvetă: comite tranzacționale (2 faze) sau upsert/îmbinare-idempotency.
Outbox/Inbox: publicarea garantată a evenimentelor de domeniu de la OLTP.


7) Îmbogățirea în timp real

Căutare: Redis/Scylla (limite RG, starea KYC, BIN→MCC, IP→Geo/ASN).
Apeluri asincrone: sancțiuni/APP API cu timeout și rezervă („necunoscut”).
FX/fus orar: normalizarea sumelor și a timpului de piață locală ('fx _ source', 'tz').


8) Servirea și magazinele în timp real

ClickHouse/Pinot/Druid: agregări de minute/secunde, vizualizări materializate.
Gold-stream: tabele operaționale GGR/RG/AML, SLA pentru ≤ întârziere 1-5 min.
API/GraphQL: latență scăzută pentru tablouri de bord și integrări externe.

Exemplu ClickHouse (minut cu minut):
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) Observabilitate și SLO

SLI/SLO (repere):
  • p95 ingest→alert ≤ 2 s (critic), ≤ 5 s (sold).
  • Integralitatea ferestrei T ≥ 99. 5%.
  • Erori de schemă ≤ 0. 1%; Procentul evenimentelor cu 'trace _ id' ≥ de 98%.
  • Disponibilitatea serviciului Stream ≥ 99. 9%.
Tablouri de bord:
  • Lag-uri partid/subiect, operatori de timp ocupat, dimensiunea de stat.
  • Pâlnie „sobytiye→pravilo→keys”, harta cheilor „fierbinți”, raport târziu.
  • Cost: cost/GB, cost/interogare, costul punctelor de control/reluări.

10) Confidențialitate și conformitate

Minimizare PII: pseudonimizare ID, mascare câmp, tokenizare PAN/IBAN.
Rezidență de date: conducte regionale (SEE/UK/BR), chei de criptare individuale.
Operațiuni juridice: DSAR/RTBF pe magazinele din aval, Legal Hold pentru cazuri/rapoarte.
Audit: jurnale de acces, arhive de soluții neschimbate.


11) Economie și productivitate

Cheile și sharding: Evitați tastele „fierbinți” (sărare/cheie compozită).
Condiție: TTL rezonabil, instantanee, reglare starea RocksDB/backend.
Preagregare: reducerea în față pentru fluxurile zgomotoase.
Eșantionare: valabilă pe valori non-critice (nu pe tranzacții/conformitate).
Chargeback: bugete pentru teme/locuri de muncă, cote și alocarea echipei.


12) Streaming DQ (Calitate)

Ingerare-validare (schemă, enumerări, mărime), dedup „(event_id, sursă)”.
Pe flux: completitudine/dup- rate/late-ratio, controlul ferestrei (fără numărare dublă).
Politici de reacție: alertă critică → DLQ +; etichetă → major/minor și apoi clar.

Reguli minime (YAML, exemplu):
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) Controlul securității accesului și al eliberării

RBAC/ABAC: roluri separate pentru citirea firelor, schimbarea regulilor/modelelor.
Control dual: rollout-uri de reguli și modele prin „2 chei”.
Canare/A/B: regula întunecată și rulează modelul, controlul preciziei/rechemării.
Secretele: KMS/CMK, rotație regulată, interzicerea secretelor în jurnalele.


14) Procese și RACI

R (Responsabil): Streaming Platform (infra/releases), Domain Analytics (reguli/caracteristici), MLOps (scoring).
A (Responsabil): Șef de date/Risc/Conformitate pe domenii.
C (Consultat): DPO/Legal (PII/retenție), SRE (SLO/Incidente), Arhitectură.
I (Informat): Produs, Suport, Marketing, Finanțe.


15) Foaia de parcurs privind implementarea

MVP (2-4 săptămâni):

1. Kafka/Redpanda + două subiecte critice („plăți”, „auth”).

2. Lucrare Flink cu filigran, deduplicare și o regulă CEP (AML sau RG).

3. ClickHouse/Pinot vitrină 1-5 min, tablouri de bord lag/completitudine.

4. Canal incident (webhooks/Jira), SLO-uri de bază și alerte.

Faza 2 (4-8 săptămâni):
  • Îmbogățire online (Redis/Scylla), Feature Store, căutări asincrone.
  • Gestionarea regulilor ca cod, eliberări canare, A/B.
  • Streaming DQ, regionalizarea conductelor, proceduri DSAR/RTBF.
Faza 3 (8-12 săptămâni):
  • Multi-regiune activă, ce-dacă reluare simulator, auto-calibrare a pragurilor.
  • Vitrine Full Gold-stream (GGR/RG/AML), raportând aproape în timp real.
  • Tablouri de bord valoare, chargeback, exerciții DR.

16) Exemple (fragmente)

Flink CEP - comutator dispozitiv:
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 - filtru idempotent:
java if (seenStore.putIfAbsent(eventId, now()) == null) {
context.forward(event);
}

17) Lista de verificare pre-vânzare

  • Scheme și contracte în Registry, testele back-compat sunt verzi.
  • Incluse filigran/permise lateness, dedup, și DLQ.
  • Configurat SLO și alerte (lag/late/dup/stat dimensiune).
  • Îmbogățirea cu cache-uri și timeout, rezervă „necunoscut”.
  • RBAC/dual-control la reguli/modele, toate modificările sunt înregistrate.
  • Reguli, storefronts și documentația runbook și reluarea/rollback.

18) Greșeli frecvente și cum să le evitați

Ignorați timpul de eveniment: fără filigrane, măsurătorile „float”.
Fără deduplicare: alerte false și numărare dublă.
Taste fierbinți: distorsionarea petrecerilor → sărarea/resharding.
API-uri front-end sincrone în calea fierbinte: numai async + cache.
Cost fără administrare: preagregări, state TTL, cote, tablouri de costuri.
Lipsa simulatorului: rollout-urile fără „reluare” duc la regresii.


19) Glosar (scurt)

CEP - Procesarea complexă a evenimentelor.
Filigran - limita de pregătire a ferestrei în funcție de eveniment-timp.
Permise Lateness - toleranța la evenimentele târzii.
Operator Statful - un operator cu o stare salvată.
Feature Store - caracteristică coordonată de navigare (online/offline).


20) Linia de jos

Streaming și streaming analytics sunt un sistem gestionat: contracte, ferestre și filigrane, logică statală și CEP, îmbogățire și storefronturi în timp real, SLO și observabilitate, confidențialitate și valoare sub control. Urmând practicile descrise, platforma primește detectoare de risc fiabile, panouri operaționale și personalizare cu latență și cost previzibile.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.