GH GambleHub

Event-Streaming və real vaxt məlumatları

(Bölmə: Texnologiya və Infrastruktur)

Qısa xülasə

Event-Streaming hadisələrin göründüyü anda emalı və çatdırılmasıdır. iGaming üçün bu, bahislərə, depozitlərə, antifrod siqnallarına, məsuliyyətli oyun limitlərinə, turnir cədvəllərinə və şəxsi offerlərə ani reaksiya deməkdir. Əsas kərpiclər: hadisə şinası (Kafka/Pulsar), axın mühərriki (Flink/ksqlDB/Spark Structured Streaming), əməliyyat DB-dən CDC (Debezium), onlayn ML üçün Feature Store və real vaxt analitikası (materiallaşdırılmış təsəvvürlər, OLAP).

Harada iGaming kritik

Antifrod & risk: <100-300 ms-də əməliyyatların hesablanması, davranış nümunələrinin korrelyasiyası, bloklanması və eskalasiyası.
Məsuliyyətli oyun: limitlərə nəzarət, itki sürəti, anormal davranış - həyəcan və real vaxt rejimində avtomatik məhdudiyyətlər.
Ödənişlər: status ventilləri, webhooks PSP, smart-retry, balans proyeksiyaları, SLA «time-to-wallet».
Oyun tədbirləri: turnir liderlərinin hesablanması (sliding windows), canlı oyun turları, CRM/marketinq üçün real vaxt lentləri.
Personalizasiya: Online Fich (RFM, propensity) → trigger kampaniyaları, saniyələr ərzində push/email.
Əməliyyat analitikası: p95/p99 latency, huni addımlarının çevrilməsi, platformanın sağlamlıq siqnalları.

Memarlıq modelləri

Lambda vs Kappa

Lambda: batch (DWH/ETL) + streaming (operativ). Plus - çeviklik və «ucuz» çek; mənfi - ikili məntiq.
Kappa: hər şey jurnaldan axın kimi (Kafka). Plus - vahid kod, hadisələrin reiqrası; mənfi - daha sərt infrastruktur tələbləri.

Təcrübə: kritik real-time konturları üçün - Kappa; hesabat/ML-təlim üçün - əlavə batch-kontur.

Hadisə konveyeri (referans)

1. İstehsalçılar: bahis/ödəniş xidmətləri domen hadisələrini (outbox → Kafka) dərc edir.
2. Şin: Kafka açar hissələri ilə ('player _ id', 'bet _ id').
3. CDC: Debezium ALTP-dən (balans, limit) dəyişiklikləri axına çəkir.
4. Flink/ksqlDB/Spark - aqreqasiyaları, pəncərələri, CEP, join 's.
5. Proyeksiyalar: materiallaşdırılmış cədvəllər (Kafka Streams state store/ksqlDB tables/Redis), OLAP (ClickHouse/Druid).
6. İstehlakçılar: antifrod, CRM, bildirişlər, dashboard, trigger workflow.

Məlumat müqavilələri və sxemlər

Avro/Protobuf + Schema Registry: ciddi müqavilələr, backward-compatible miqrasiya.
Versiyası: 'domain. event. v{n}`; pozucu dəyişiklikləri qadağan etmək.
PII: tokenizasiya/şifrələmə, maskalama, purpose limitation (GDPR).

Çatdırılma semantikası və idempotentlik

At-least-once - de-fakto standart (dublikatlar mümkündür) → məcburi idempotent-handling.
Axında Exactly-once: Flink/Streams-da Kafka + EOS əməliyyat istehsalçıları; daha bahalı, nöqtəli tətbiq (pul/balans).
Outbox + CDC: DB xidmətindən vahid həqiqət mənbəyi, ikiqat yazıdan qorunma.
Dedup: açar ('idempotency _ key'), TTL ilə duplikasiya cədvəli, upsert/merge.

Müvəqqəti pəncərələr və «gec» məlumatlar

Pəncərələr:
  • Tumbling - sabit yuvalar (məsələn, bir dəqiqə dövriyyəsi).
  • Hopping - addım sürüşmə (məsələn, 1 dəqiqə addım 5 dəqiqə pəncərə).
  • Session - fəaliyyətsizliyə görə (oyunçu sessiyası).
  • Watermarks: event-time emal, «gec» tolerantlığı (lateness), DLQ/side-output evakuasiya.
  • CEP (Complex Event Processing): «A sonra 3 dəq B», «M saniyədə N hadisə», «ləğv/kompensasiya» nümunələri.

Vəziyyət və miqyaslandırma

Stateful operatorları: aqreqasiyalar/coynlar vəziyyəti saxlayır (RocksDB state backend).
Changelog topics: etibarlılıq və state bərpa.
Backpressure: avtomatik sürət tənzimlənməsi, sink/ sistemlərinin limitləri.
Açarların paylanması: qaynar açarlar (heavy hitters) → key-salting, skew mitigation.

Monitorinq və SLO

SLO axını: p99 end-to-end latency (məsələn, ≤ 2 s), icazə verilən consumer lag, mövcudluğu ≥ 99. 9%.
Metriklər: throughput, partiyalar üzrə lag, watermark delay, drop/late ratio, backpressure, busy time operatorları, GC/JVM.
Alertlər: DLQ böyüməsi, watermark gecikməsi, EOS yoxlama nöqtələrinin uğursuzluqları, online/oflayn fiş.
Trace: prodüser-strim-konsumer vasitəsilə korelasiya ID ('trace _ id', 'message _ id').

Təhlükəsizlik və uyğunluq

TLS/MTLS, ACL/RBAC top/cədvəllər, həssas domenlərin seqmentasiyası (ödənişlər/KUS).
Tranzit/diskdə PII şifrələmə; Vault/SOPS sirləri.
Data retention & locality: bölgələrə görə saxlama (AB, Türkiyə, LatAm), silinmə siyasəti.
Audit: kim nəşr/oxumaq, ssenari təkrarlanabilirlik.

Yüksək mövcudluq və DR

Kafka: `replication. factor ≥ 3`, `min. insync. replicas ',' acks = all ', DR üçün cross-regional replikasiya (MM2).
Flink/Streams: nəzarət olunan buraxılışlar üçün periodik checkpoint + savepoint; HA-JobManager.
OLAP: seqmentlərin replikasiyası, read replicas; testlər failover (game day).

Performans və sazlama

Prodüserlər: batching ('linger. ms`, `batch. size '), sıxılma (lz4/zstd).
Konsumerlər: düzgün 'max. poll. interval ', backoff partiyalar fasilə.
Partizanlaşdırma: hədəf TPS və paralellik partiyalar hesab.
State: RocksDB options (block cache/write buffer), NVMe/IOPS, pinning.
Network: 10/25G, TCP-sazlama, n + 1 sink-sorğuların saxlanması.

Həyata keçirilməsi: əsas texnologiyalar

Şina: Apache Kafka (alternativlər: Pulsar, Redpanda).
Axın emalı: Apache Flink, Kafka Streams, ksqlDB, Spark Structured Streaming.
CDC: Debezium (MySQL/Postgres), Outbox konnektorları.
Proyeksiya anbarları: ksqlDB tables, Kafka Streams state store, Redis üçün aşağı gecikmə, ClickHouse/Druid/Pinot üçün OLAP.
Fichestor: Feast və ya öz - online (Redis) + offline (Parquet/BigQuery), sabitlik zəmanəti.

Dizayn nümunələri

Outbox → Kafka: DB əməliyyatından hər bir domen hadisəsi.
Dastanlar: hadisələr vasitəsilə kompensasiya; orkestr - axın.
Fan-out: bir hadisə → antifrod, CRM, analitika, notifikasiya.
Materialized Views: aparıcı bordlar, balans, limitlər - axından yenilənən cədvəllər şəklində.
Reprocessing: aqreqatların/retro analitiklərin yenidən hesablanması üçün topiklərin səsləndirilməsi.

Nümunələr (konsepsiyalar)

ksqlDB: turnir liderləri (sürüşmə pəncərəsi)

sql
CREATE STREAM bets_src (
bet_id VARCHAR KEY,
player_id VARCHAR,
amount DOUBLE,
ts BIGINT
) WITH (KAFKA_TOPIC='bets. placed. v1', VALUE_FORMAT='AVRO', TIMESTAMP='ts');

CREATE TABLE leaderboard AS
SELECT player_id,
SUM(amount) AS total_stake,
WINDOWSTART AS win_start,
WINDOWEND  AS win_end
FROM bets_src
WINDOW HOPPING (SIZE 10 MINUTES, ADVANCE BY 1 MINUTE)
GROUP BY player_id
EMIT CHANGES;

Flink (psevdokod): late-events

java stream
.assignTimestampsAndWatermarks(WatermarkStrategy. forBoundedOutOfOrderness(Duration. ofSeconds(10)))
.keyBy(e -> e. playerId)
.window(SlidingEventTimeWindows. of(Time. minutes(5), Time. minutes(1)))
.aggregate(scoreFunction, processWindow)
.sideOutputLateData(lateTag)
.addSink(riskTopic);

Axın keyfiyyətinin test edilməsi

Sxemlər və təkamül Contract testləri (Schema Registry).
Yükləmə: hədəf TPS, p99, sink deqradasiyasında davranış.
Failure/chaos: brokerlərin/düyünlərin düşməsi, şəbəkə gecikmələri, split-brain.
Deterministic replays: topiklərin təkrar qaçışı → eyni nəticələr.
Canary axınları: gecikmə və bütövlüyü yoxlama konturu.

Giriş çek siyahısı

1. SLO (p99 E2E ≤ X c, lag ≤ Y, mövcudluğu ≥ Z) müəyyən edin.
2. Sxemləri və açarları standartlaşdırın (player_id/bet_id).
3. Memarlıq seçin (kritik konturlar üçün Kappa).
4. outbox + CDC qurmaq və PII təcrid.
5. Windows, watermark, late-policy və DLQ/side outputs.
6. Pul yollarında EOS/idempotentliyi daxil edin.
7. lag, watermark, DLQ-də monitorinq və alertlər daxil edin.
8. HA/DR və reprocessing qaydaları təmin edin.
9. Online/oflayn Feature Store və sinxronizasiya yerləşdirin.
10. Game-day keçirin: uğursuzluqlar və bərpa işləri.

Antipatternlər

şüurlu siyasət olmadan event-time və processing-time qarışdırın.
schema governance → «sındırıcı» buraxılışların olmaması.
late data və «qaynar açarları» məhəl qoymayın.
replay strategiyası və top versiyasının olmaması.
İdempotency və EOS olmadan dərəcələr/ödənişlər.

Nəticələr

Real-time axını «başqa bir nəqliyyat» deyil, düşüncə tərzidir: domen hadisələri, aydın SLO, məlumat müqavilələri, pəncərələr və vəziyyət, təhlükəsizlik və müşahidə. iGaming üçün sabit dəst - Kafka + Flink/ksqlDB + Debezium + Materialized Views + Feature Store. Bu milisaniyəlik reaksiyalar, onlayn/oflayn analitikanın uyğunluğu və yükün artması ilə idarə olunan çətinlik verir.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.