Olay Akışı ve gerçek zamanlı veriler
(Bölüm: Teknoloji ve Altyapı)
Kısa Özet
Olay Akışı, olayların göründükleri anda işlenmesi ve teslim edilmesidir. Bu, iGaming için bahislere, depozitolara, dolandırıcılık karşıtı sinyallere, sorumlu oyun limitlerine, turnuva masalarına ve kişisel tekliflere anında tepki vermek anlamına gelir. Temel tuğlalar: Olay yolu (Kafka/Pulsar), akış motoru (Flink/ksqlDB/Spark Structured Streaming), işlem veritabanlarından CDC (Debezium), çevrimiçi ML ve gerçek zamanlı analitik için Özellik Mağazası (materyalize görünümler, OLAP)
IGaming'de kritik nerede
Anti-dolandırıcılık ve risk: <100-300 ms'de puanlama işlemleri, davranış kalıplarının korelasyonu, engelleme ve tırmanma.
Sorumlu oyun: sınır kontrolü, kayıp oranı, anormal davranış - uyarılar ve gerçek zamanlı otomatik kısıtlamalar.
Ödemeler: durum valfleri, webhooks PSP, akıllı yeniden deneme, denge projeksiyonları, SLA "cüzdan zamanı".
Oyun etkinlikleri: Turnuva liderlerinin hesaplanması (sürgülü pencereler), canlı oyun turları, CRM/pazarlama için gerçek zamanlı yayınlar.
Kişiselleştirme: çevrimiçi özellikler (RFM, eğilim) - tetikleme kampanyaları, saniyeler içinde itme/e-posta.
Operasyonel analitik: p95/p99 gecikme, huni adım dönüşümü, platform sağlık sinyalleri.
Mimari modeller
Lambda vs Kappa
Lambda: toplu (DWH/ETL) + akış (operatif). Artı - esneklik ve "ucuz" bech; eksi çift mantıktır.
Kappa: Her şey bir dergiden (Kafka) bir akarsu gibidir. Artı - tek bir kod, olay tekrarı; eksi - daha katı altyapı gereksinimleri.
Uygulama: kritik gerçek zamanlı konturlar için - Kappa; Raporlama/ML eğitimi için - ek bir toplu devre.
Olay boru hattı (referans)
1. Üreticiler: bahis/ödeme hizmetleri etki alanı etkinliklerini yayınlar (giden kutusu Kafka).
2. Otobüs: Anahtarlara göre parçaları olan kafka ('player _ id', 'bet _ id').
3. CDC: Debezium, OLTP'den (bakiyeler, limitler) değişiklikleri akışa çeker.
4. Akış: Flink/ksqlDB/Spark - toplamalar, pencereler, CEP, katılma.
5. Projeksiyonlar: Maddeleştirilmiş tablolar (Kafka Streams state store/ksqlDB tables/Redis), OLAP (ClickHouse/Druid).
6. Tüketiciler: Dolandırıcılıkla mücadele, CRM, bildirimler, gösterge panoları, tetikleyici iş akışları.
Veri Sözleşmeleri ve Şemalar
Avro/Protobuf + Schema Registry: sıkı sözleşmeler, geriye uyumlu geçişler.
Sürüm oluşturma: 'domain. olay. v {n} '; Değişiklikleri kırmayı yasaklar.
PII: tokenization/encryption, maskeleme, amaç sınırlaması (GDPR).
Teslimat semantiği ve idempotency
En az bir kez fiili bir standarttır (kopyalar mümkündür) - idempotent kullanımı gereklidir.
Akışta tam olarak bir kez: Flink/Streams'de Kafka + EOS işlem üreticileri; daha pahalı, nokta (para/denge) uygulayın.
Outbox + CDC: hizmet veritabanından tek bir gerçek kaynağı, çift yazma koruması.
Dedup: anahtar ('idempotency _ key'), TTL ile veri tekilleştirme tablosu, uppert/merge.
Zaman pencereleri ve "geç" veriler
Windows:- Yuvarlanma - sabit yuvalar (örneğin, bir dakikalık devrim).
- Atlama - artışlarla kayma (örneğin, 1 dakikalık artışlarla 5 dakikalık bir pencere).
- Oturum - hareketsizlikle (oyuncu oturumları).
- Filigranlar: olay zamanı işleme, gecikme, DLQ/yan çıkış tahliyesi.
- CEP (Complex Event Processing - Karmaşık Olay İşleme): "A sonra B in 3 min", "N events in M seconds", "cancellation/compensation".
Durum ve ölçeklendirme
Durumsal operatörler: toplama/joyne tutma durumu (RocksDB durum arka ucu).
Changelog konuları: güvenilirlik ve durum kurtarma.
Geri basınç: otomatik hız kontrolü, sistem sink/外 sınırları.
Anahtar dağılımı: ağır vurucular - anahtar tuzlama, çarpıklık azaltma.
İzleme ve SLO
Akış SLO: p99 uçtan uca gecikme (örneğin, ≤ 2 s), geçerli tüketici gecikmesi, kullanılabilirlik ≥ 99. 9%.
Metrikler: verim, tarafa göre gecikme, filigran gecikmesi, düşme/gecikme oranı, geri basınç, meşgul zaman operatörleri, GC/JVM.
Uyarılar: DLQ büyümesi, filigran gecikmesi, EOS kontrol noktası arızaları, çevrimiçi/çevrimdışı rassinh özellikleri.
İzleme: Bir üretici-akış-tüketici aracılığıyla korelasyonel kimlikler ('trace _ id', 'message _ id').
Güvenlik ve uyumluluk
TLS/MTLS, konular/tablolar üzerinde ACL/RBAC, hassas alanların bölümlendirilmesi (ödemeler/CCM).
Transit/diskte PII şifreleme; Vault/SOP sırlar.
Veri saklama ve yerellik: bölgeye göre depolama (AB, Türkiye, LatAm), kaldırma politikası.
Denetim: Kim yayınladı/okudu, komut dosyalarının tekrarlanabilirliği.
Yüksek Kullanılabilirlik ve DR
Kafka: 'çoğaltma. Faktör ≥ 3 ', min. insync. DR için replikalar ',' acks = all ', bölgeler arası replikasyon (MM2)
Flink/Akışlar: kontrollü sürümler için periyodik kontrol noktası + savepoint; HA-JobManager.
OLAP: parça çoğaltma, okuma kopyaları; Failover (oyun günü) testleri.
Performans ve ayarlama
Yapımcılar: butching ('linger. ms ',' toplu. Boyut '), sıkıştırma (lz4/zstd).
Tüketiciler: doğru 'max. anket. Ara, geri çekilme sırasında partilerin duraklaması.
Bölümleme: Partileri hedef TPS ve paralellikten sayma.
Durum: RocksDB seçenekleri (blok önbellek/yazma arabelleği), NVMe/IOPS, sabitleme.
Ağ: 10/25G, TCP ayarı, n + 1 lavabo isteği muhafazası.
Uygulama: Anahtar Teknolojiler
Shina: Apache Kafka (alternatifler: Pulsar, Redpanda).
Akış: Apache Flink, Kafka Akışları, ksqlDB, Spark Yapılandırılmış Akış
CDC: Debezium (MySQL/Postgres), Outbox konnektörleri.
Projeksiyon depoları: ksqlDB tabloları, Kafka Streams devlet mağazası, düşük gecikme süresi için Redis, OLAP için ClickHouse/Druid/Pinot.
Fichestor: Bayram veya kendi - çevrimiçi (Redis) + çevrimdışı (Parke/BigQuery), tutarlılık garantisi.
Tasarım desenleri
Giden Kutusu - Kafka: DB işlemindeki her etki alanı olayı.
Destanlar: Olaylar Üzerinden Telafiler; akarsu ile orkestrasyon.
Fan-out: Bir olay - anti-dolandırıcılık, CRM, analitik, bildirimler.
Materyalize Görünümler: Lider tabloları, denge, sınırlar - akıştan güncellenen tablolar şeklinde.
Yeniden işleme: agregaların/retro analizlerin yeniden hesaplanması için topikallerin çoğaltılması.
Örnekler (kavramlar)
ksqlDB: turnuva liderleri (sürgülü pencere)
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 (pseudocode): Geç olaylarla dolandırıcılık karşıtı puanlama
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);
İplik kalitesi testi
Şemaların ve evrimin sözleşme testleri (Schema Registry).
Yükleme: hedef TPS, p99, lavabo bozulması davranışı.
Başarısızlık/kaos: brokerlarda/düğümlerde düşüş, ağ gecikmeleri, bölünmüş beyin.
Deterministik tekrarlar-Konuları yeniden çalıştırır - aynı sonuçlar.
Kanarya akışları: gecikme ve bütünlüğü kontrol etmek için döngü.
Uygulama kontrol listesi
1. SLO'yu tanımlayın (p99 E2E ≤ X c, Y ≤ gecikme, kullanılabilirlik ≥ Z).
2. Şemaları ve anahtarları standartlaştırmak (player_id/bet_id).
3. Mimari'yi seçin (kritik döngüler için Kappa).
4. Giden kutusu + CDC'yi yapılandırın ve PII'yi izole edin.
5. Pencereler, filigran, geç ilke ve DLQ/yan çıkışları ayarlayın.
6. Para yollarında EOS/idempotency özelliğini etkinleştirin.
7. Gecikme, filigran, DLQ için izleme ve uyarıları tanıtın.
8. HA/DR ve yeniden işleme prosedürlerini sağlayın.
9. Feature Store'u dağıtın ve çevrimiçi/çevrimdışı olarak senkronize edin.
10. Oyun gününü geçirin: başarısızlıkları ve iyileşmeyi çalışın.
Anti-desenler
Bilinçli politika olmadan olay zamanı ve işlem zamanını karıştırma.
Şema yönetişimi eksikliği - "kırma" sürümleri.
Geç veriler ve kısayol tuşları yok sayılıyor.
Tekrarlama stratejisi eksikliği ve konuların sürümü.
Idempotency ve EOS olmadan oranlar/ödemeler.
Özet
Gerçek zamanlı akış "başka bir ulaşım'değil, bir düşünme şeklidir: etki alanı olayları, açık SLO'lar, veri sözleşmeleri, pencereler ve durum, güvenlik ve gözlemlenebilirlik. IGaming için sürdürülebilir set Kafka + Flink/ksqlDB + Debezium + Materialized Views + Feature Store'dur. Yük büyüdükçe milisaniye reaksiyonları, çevrimiçi/çevrimdışı analitik tutarlılığı ve kontrollü karmaşıklık sağlar.