GH GambleHub

Analityka w czasie rzeczywistym

1) Cel i wartość biznesowa

Analizy w czasie rzeczywistym (RTA) zapewniają reakcje w sekundach, a nie w godzinach:
  • AML/Antifraud: strukturyzacja depozytów, ataki prędkości, transakcje ryzyka.
  • Responsible Gaming (RG): przekroczenie limitów, wzorce ryzyka, samodzielne wykluczenie.
  • SRE/Operacje: wczesne wykrywanie degradacji SLA, wybuchy błędów, przegrzanie klastra.
  • Produkt i marketing: wyzwalacze personalizacji, misje/zadania, segmentacja w czasie rzeczywistym.
  • Sprawozdawczość operacyjna: GGR/NGR w czasie zbliżonym do rzeczywistego, deski rozdzielcze hal/dostawców.

Cele: p95 end-to-end 0. 5-5 μ, kompletność ≥ 99. 5%, dostępność ≥ 99. 9%.


2) Architektura odniesienia

1. Ingest/Edge - '/events/batch '(HTTP/2/3), gRPC, OTel Collector; walidacja schematów, antydublikatów, tras geograficznych.
2. Autobus imprezowy - Kafka/Redpanda (udział 'user _ id/tenant/market', DLQ, retention 3-7 dni).
3. Przetwarzanie strumienia - Flink/Iskra Structured Streaming/Beam: stacjonarni operatorzy, CEP, znaki wodne, dozwolone opóźnienia, deadup.
4. Wzbogacanie online - Redis/Scylla/ClickHouse lookups (limity RG, KYC, BIN → MCC, IP → Geo/ASN), asynchroniczne połączenia z terminami i awaryjnym.
5. Obsługa - ClickHouse/Pinot/Druid (prezentacje operacyjne 1-5 minut), Sklep Funkcyjny (znaki online), haki/bilety/SOAR.
6. Lakehouse - brąz/srebro/złoto do długoterminowej konsolidacji, powtórzenia i pojednania.
7. Obserwowalność - mierniki rurociągów, śledzenie (OTel), kłody, linie i deski rozdzielcze.


3) Sygnały i taksonomia

Płatności: "płatność. wpłata/wypłata/obciążenie zwrotne ".
Gra: 'gra. bet/payout ', sesje.
Uwierzytelnianie i zachowanie: 'auth. login/failure', device-switch, speed.
Działanie: opóźnienie, szybkość błędów, ponowne uruchomienie paleniska, nasycenie.
Zgodność: kontrola sankcji, flagi RG, wydarzenia DSAR.

Każdy typ ma właściciela domeny, schemat, świeżość SLO i późną politykę danych.


4) Okna, znaki wodne i późne dane

Okna: tumbling (fixed), skakanie, sesja.
Znak wodny: granica „wiedza według czasu” (zwykle 2-5 min).
Opóźnione zdarzenia: dodatkowa kwestia korekt, flaga 'late = true', DLQ z dużym opóźnieniem.

Przykład Flink SQL (10-min prędkości depozytu):
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) CEP i agregacje statyczne

Klucz: 'user _ id',' device _ id', 'payment. account_id'.
Status: liczniki/sumy przesuwne, filtry bloom do deduplikacji, TTL.
Wzory CEP: strukturyzacja (<próg, ≥ N razy, na okno T), przełącznik urządzenia, zmęczenie RG.

Kod pseudo CEP:
python if cnt_deposits(last=10MIN) >= 3 and sum_deposits(last=10MIN) > THRESH and all(d.amount < REPORTING_THRESHOLD):
emit_alert("AML_STRUCTURING", user_id, snapshot())

6) Dokładnie raz, porządek i idempotencja

Dostawa co najmniej raz w autobusie + dedup przez 'event _ id' podczas przetwarzania (TTL 24-72 h).
Zamówienie: podział według klawiszy (lokalne zamówienie jest gwarantowane).
Zlew: commits transakcyjne (2-fazowe) lub idempotent upsert/merge.
Outbox/Inbox: transakcyjne publikowanie wydarzeń domeny z OLTP.


7) Sklep internetowy wzbogacania i funkcji

Wyszukiwanie: limity RG, statusy KYC, BIN → MCC, IP → Geo/ASN, rynki/podatki, FX w czasie imprezy.
asynchroniczne połączenia: sankcje/APP API z terminami; na błędzie - 'nieznany' + retray/cache.
Sklep funkcyjny: negocjacje online/offline; jedną bazę kodową transformacji.


8) Sklepy w czasie rzeczywistym i surfing

ClickHouse/Pinot/Druid: kruszywa druga/minuta, zmaterializowane widoki, SLA dla opóźnienia 1-5 min.
API/GraphQL: niskie opóźnienia dla desek rozdzielczych/widżetów.
Alerts: webhooks/Jira/SOAR z wzbogaconym kontekstem (trace_id, ostatnie wydarzenia).

Przykład ClickHouse (GGR minutę po minucie):
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) Mierniki, SLI/SLO i deski rozdzielcze

Zalecane SLI/SLO:
  • 95 pingest → alert ≤ 2 s (reguły krytyczne), ≤ 5 s (inne).
  • Kompletność okna T ≥ 99. 5%; Okres ważności schematu ≥ 99. 9%; Zasięg śladowy ≥ 98%.
  • Dostępność usługi strumieniowej ≥ 99. 9%; współczynnik opóźnienia ≤ 1%.
Deski rozdzielcze (minimum):
  • Opóźnienie według stron/tematów; zajęty czas operatorów; wielkość stanu.
  • Lejek „sobytiye → pravilo → klawisze”, precyzja/przypomnienie według domeny.
  • Karta ciepła późno/kompletność; gorąca mapa kluczy.

10) Streaming DQ (jakość)

Najnowsze walidacje: schemat/enums/limit wielkości, anty-duplikaty.
Na strumieniu: kompletność/dup-rate/late-ratio, poprawność okna (bez podwójnego liczenia).
Polityka reakcji: krytyczne → DLQ + pager; major/minor → tagging + raport.

Przykład YAML:
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

11) Prywatność, bezpieczeństwo i rezydencja

Minimalizacja PII: aliasing ID, maskowanie pola wrażliwego, tokenizacja PAN/IBAN.
Pobyt danych: rurociągi regionalne (EOG/UK/BR), poszczególne klucze KMS.
DSAR/RTBF: selektywna edycja na kolejnych sklepach; Legalne wstrzymanie spraw/sprawozdań.
Audyt: niezmienne dzienniki zmian dostępu/reguły, rejestrowanie zwolnień.


12) Ekonomia i wydajność

Shading/keys: unikać „gorących” klawiszy (solenie/kompozyt), równowaga stron.
Status: TTL, kompaktowe migawki, RocksDB/state backend tuning.
Wstępne agregacje: zmniejszenie na wczesnych etapach hałaśliwych tematów.
Pobieranie próbek: tylko dla mierników innych niż krytyczne (nie dla transakcji/zgodności).
Obciążenie zwrotne: Tematyka/budżet pracy, kwoty powielania i ciężkie wnioski.


13) Procesy i RACI

R: Streaming Platform (info/releases), Domain Analytics (zasady/funkcje), MLOps (scoring/Feature Store).
Odp.: Szef danych/ryzyka/zgodności według domeny.
C: DPO/Legal (PII/retencja), SRE (SLO/incydenty), Architektura.
I: Produkt, Wsparcie, Marketing, Finanse.


14) Plan działania w zakresie wdrażania

MVP (2-4 tygodnie):

1. Tematy krytyczne Kafka/Redpanda + 2 (na przykład „płatności”, „auth”).

2. Zadanie kołnierza ze znakiem wodnym, deduplikacją i 1 regułą CEP (AML lub RG).

3. Prezentacja operacyjna w ClickHouse/Pinot (1-5 min), deski rozdzielcze lag/kompletności.

4. Kanał incydentów (webhaki/Jira), podstawowe SLO i wpisy.

Faza 2 (4-8 tygodni):
  • Wzbogacanie online (Redis/Scylla), sklep z funkcjami, asynchroniczne wyszukiwania.
  • Zasady zarządzania jako kod, kanarka/A-B, streaming DQ.
  • Regionalizacja przenośników, procedury DSAR/RTBF, blokada prawna dla spraw.
Faza 3 (8-12 tygodni):
  • Multi-region active-active, replay & what-if simulator, automatyczna kalibracja progowa.
  • Sklepy ze złotym strumieniem (GGR/RG/AML), raportowanie w czasie zbliżonym do rzeczywistego.
  • Deski rozdzielcze, obciążenie zwrotne, ćwiczenia DR.

15) Przykłady (fragmenty)

Flink CEP - urządzenie-przełącznik:
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 - idempotent filter:
java if (seenStore.putIfAbsent(eventId, now()) == null) {
context.forward(event);
}

16) Lista kontrolna przedsprzedaży

  • Systemy/umowy w rejestrze, testy back-compat są zielone.
  • W zestawie znak wodny/dozwolone opóźnienia, dedup, i DLQ.
  • Skonfigurowane SLO i wpisy (lag/late/dup/state size).
  • Wzbogacenie buforami i terminami; Fallback „nieznany”.
  • RBAC/podwójna kontrola zasad/modeli; Aktywny dziennik zmian.
  • Dokumentacja zasad/okna sklepowe; runbook'i replay/rollback.

17) Częste błędy i jak ich uniknąć

Ignoruj czas zdarzeń: bez znaków wodnych, metryki „unoszą się”.
Brak deduplikacji: fałszywe wpisy, podwójne liczenie.
Gorące klucze: zniekształcenie stron → solenie/odtworzenie.
Synchroniczne API z przodu w gorącej ścieżce: tylko async + cache.
Koszty niezagospodarowane: preagregacje, stany TTL, kwoty, monitorowanie kosztów.
Brak symulatora: rollouts bez powtórki → regresja.


18) Najważniejsze

Analityka w czasie rzeczywistym nie jest „szybka BI”, ale zarządzany obwód z kontraktami, logika statyczna, CEP, znaki wodne, wzbogacenie online i surowe SLO. Stosując te praktyki, platforma otrzymuje dokładne sygnały i decyzje w ciągu kilku sekund, zachowując zgodność, scenariusze produktów i odporność operacyjną po kontrolowanych kosztach.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.