GH GambleHub

Akış

Akış Nedir

Akış, sonsuz olay dizilerine (işlem günlüğü, tıklamalar, ödemeler, telemetri), minimum gecikme ve durumların doğru olduğunun garantisi ile sürekli bir tepkidir. "Dönem boyunca biriken tüm verileri aldığımız" partinin aksine, akış verileri geldiği gibi işler, durumu korur ve olayın zamanını dikkate alır.

Anahtar kavramlar

Event, 'event _ time've benzersiz' event _ id'ile değişmez bir gerçektir.
Olay zamanı ve işlem süresi - birincisi kaynaktan gelir, ikincisi - operatör olayı gerçekten gördüğünde.

Windows - zamana göre grup olayları:
  • Yuvarlanma, Sıçrama/Kayma, Oturum.
  • Filigranlar - "T'den önceki olaylar zaten geldi", pencereleri kapatmanıza ve geç verilerin beklenmesini sınırlamanıza izin veren bir değerlendirme.
  • Gecikme - geçerli filigrandan daha az 'event _ time' içeren olaylar; Bitirme kuralları sıklıkla uygulanır.
  • Durum - toplama, birleştirme, veri tekilleştirme için yerel tablolar/anahtarlı durum.
  • Geri basınç - aşağı akış verimi aşıldığında basınç; Protokol ve tamponlar tarafından kontrol edilir.

Mimari temel

1. Kaynak: olay komisyoncusu (Kafka/NATS/Pulsar), DB'den CDC, kuyruklar, dosyalar/günlük toplayıcıları.
2. Akış motoru: pencereleri, agregaları, joynları, desenleri (CEP) hesaplar, durumu ve kontrol noktalarını yönetir.
3. Lavabo: OLTP/OLAP veritabanı, arama motoru, önbellek, konular, vitrinler/raporlar için depolar.
4. Şema kaydı: yük evrimini ve uyumluluğunu kontrol eder.
5. Gözlemlenebilirlik: metrikler, izleme, günlükler, gecikme panoları ve filigranlar.

Zaman semantiği ve düzen

Her zaman olay zamanını tercih edin: bu, gecikmeler ve kesintiler için tek değişmezdir.
Olaylar düzenden çıkabilir; Sipariş sadece parti anahtarı içinde garanti edilir.

Filigranlar izin verir:
  • Pencereleri kapatın ve sonuç verin;
  • "Ne kadar beklediğimizi sınırla" gecikmeli olaylar ('allowed _ lateness').
  • Geç olaylar için, retractions/upserts kullanın: agregaların ve düzeltici olayların yeniden hesaplanması.

Durum ve güvenilirlik

Anahtarlı durum: toplamların (toplamlar, sayaçlar, veri tekilleştirme yapıları) verileri anahtarlarla karıştırılır.
Checkpoint/Savepoint - kurtarma için periyodik durum anlık görüntüleri; savepoint - kod sürümü geçişleri için yönetilen anlık görüntü.

Tam olarak-bir kez etkili bir şekilde elde edilir:
  • İşlemsel "okuma-işlenmiş-yazma" (commit sink + okuma pozisyonu);
  • Idempotent lavabolar (upsert/merge) + veri tekilleştirme tabloları;
  • Toplamaları sürümleştirerek (iyimser eşzamanlılık).

Windows, toplama, katılma

Windows:
  • Yuvarlanma: basit periyodik raporlar (dakika, saat).
  • Atlama/Kayma: "Kayma" metrikleri (1 dakikalık artışlarla 5 dakika içinde).
  • Oturum: özel oturumlar ve anti-dolandırıcılık için doğal.
  • Toplama: toplam/sayım/avg/yaklaşık-farklı (HyperLogLog), yüzdelik (TDiggest/CKMS).
  • Stream-Stream birleşimi: her iki tarafın da anahtar ve zamana göre tamponlanmasını gerektirir, 'allowed _ skew'a saygı gösterin.
  • Stream-Table join (KTable) - Bir dizin veya geçerli durum ekler (örneğin,'aktif kullanıcı sınırları ").

Gecikmeli ve yinelenen verilerle çalışma

Veri tekilleştirme: 'event _ id' veya '(producer_id, sıra)'ile; "Seen" tuşlarını TTL ile yineleme penceresinin ≥ saklayın.
Geç olaylar: Kapattıktan sonra 'X' için işlem sonrası pencereye izin verin (geri çekme/upserts).
Yanlış çoğaltmalar: agregaları idempotently olarak ayarlayın ve günlüklerdeki "ALREADY_APPLIED" düzeltin.

Ölçek ve performans

Anahtar sharding: paralellik sağlar; Sıcak tuşlara dikkat et.
Backpressure: paralelliği sınırlayın, yayınlarken toplu iş ve sıkıştırma kullanın.
Filigranlar: Çok agresif olmayın - sert filigranlar beklentiyi azaltır, ancak geç güncellemelerin oranını artırır.
Durum: Boyut ve erişim kalıplarını dikkate alarak formatı (RocksDB/state store/in memory) seçin; TTL'yi temizle.
Otomatik ölçekleme: gecikmeye göre, CPU, durum boyutu, GC süresi.

Güvenilirlik ve yeniden başlatmalar

Idempotent lavabo veya ofset sabitleme ile yapılan işlem, doğruluğun temelidir.
Yeniden başlattıktan sonra yeniden işleme izin verilir; Etki "tam olarak bir kez" kalmalıdır.
DLQ/otopark: sorunlu kayıtları nedenleri olan ayrı bir konuya gönderin; yeniden işleme sağlar.

Gözlemlenebilirlik (neyin ölçüleceği)

Kaynağa göre gecikme (zamana ve mesaja göre).
Filigran/geçerli olay zamanı ve geç olayların oranı.
Verim/gecikme operatörleri, p95/p99 uçtan uca.
Durum boyutu/rocksdb I/O, kontrol noktası hızı/süresi.
DLQ oranı, veri tekilleştirme/yeniden ödeme yüzdesi.
CPU/GC/yığın, duraklatma süresi.

Güvenlik ve uyumluluk

Veri sınıflandırması: PII/PCI'yı diyagramlarda işaretleyin, minimumu saklayın, durumu ve anlık görüntüleri şifreleyin.
Erişim denetimi: Konu/durum tabloları ve lavabolar için ayrı ACL'ler.
Retentions: Yasal gerekliliklerle uyumlu (GDPR/unutulma hakkı).
Denetim: log 'event _ id', 'trace _ id', sonuç: 'APPLIED/ALREADY _ APPLIED/RETRIEVED'.

Uygulama kalıpları

1. CDC - normalleştirme - etki alanı olayları: ham veritabanı değişikliklerini yayınlamaz, anlaşılabilir iş gerçeklerine göre haritalandırır.
2. Üreticiler için çıkış kutusu: işlem gerçeği + olay - bir veritabanı işleminde.
3. Core vs Zenginleştirilmiş: kritik akışta minimum yük, zenginleştirme - asenkron.
4. Yeniden oynatma dostu: Projeksiyonlar/vitrinler kütükten yeniden birleştirilmelidir.
5. Tasarım gereği idempotency: operation/event key, uppert şemaları, agrega versiyonları.

Test etme

Birim/Özellik tabanlı: kümelerin ve dönüşümlerin değişmezleri.
Akış testleri: sıra dışı ve kopyalarla sabit olay akışı - pencere ve veri tekilleştirme kontrolleri.
Altın pencereler: referans pencereler/kümeler ve izin verilen geç ayarlamalar.
Hata enjeksiyonu: "Kaydedilen etki've" taahhüt edilen ofset "arasında düşüş.
Yeniden oynatma testleri: log = current durumunun başlangıcından itibaren vitrinin yeniden birleştirilmesi.

Maliyet ve optimizasyon

Windows ve filigran gecikmeyi/kaynakları etkiler: pencere ne kadar uzun olursa ve 'izin verilen _ gecikme'ne kadar büyük olursa, durum o kadar büyük olur.
Codec ve sıkıştırma: CPU/ağ dengesi.
Toplu üretim çıktısı: daha az ağ çağrısı ve işlemi.
Erken filtreleme ("pushdown"): fazlalığı kaynağa mümkün olduğunca yakın atın.

Antipatterns

Olay zamanının gerekli olduğu işlem süresine bağlayın - yanlış analiz.
Lavaboda idempotency eksikliği - yeniden başlatmalarda çift etkiler.
Küresel "mega-anahtarlar": sıcak bir bölüm paralelliği kırar.
Halka açık olaylar olarak ham CDC'ler: sızdırılmış DB şemaları, evrimde kırılganlık.
DLQ yok: "Zehirli" mesajlar tüm boru hattını bloke eder.
Filigran yerine sabit sabit gecikme: ya sonsuz bekleme ya da veri kaybı.

Etki alanı örnekleri

Ödemeler/Finans

Akış 'ödeme. ', anti-dolandırıcılık için pencereler (oturum + CEP),' operation _ id'ile büyükbaba.
Muhasebe defterine gönderildiğinde tam bir kez etkisi (uppert + sürüm).

Pazarlama/Reklamcılık

TO/dönüşümlerin sürgülü pencereleri, '± Δ t' toleransı ile tıklama ve gösterimlere katılın, teklif için toplama.

iGaming/online hizmetler

Gerçek zamanlı denge/sınırlar, görevler/başarılar (oturum pencereleri), dolandırıcılıkla mücadele kalıpları ve uyarıları.

Mini şablonlar (sözde kod)

Filigranlı pencere ve geç güncellemeler

pseudo stream
.withEventTime(tsExtractor)
.withWatermark(maxAllowedLag=2m)
.window(TUMBLING, size=1m, allowedLateness=30s)
.keyBy(user_id)
.aggregate(sum, retractions=enable)
.sink (upsert_table )//idempotent upsert by (user_id, window_start)

Ofset fiksasyonlu işlemsel lavabo

pseudo begin tx upsert target_table using event, key=(k)
update consumer_offsets set pos=:pos where consumer=:c commit

Üretim kontrol listesi

  • Olay zamanı ve filigran stratejisi tanımlanmış; Pencereler ve 'allowed _ lateness' seçilir.
  • Idempotent lavabo veya işlem ofset ile taahhüt.
  • Şema kayıt defteri ve uyumluluk modları etkinleştirildi; Katkı evrimi.
  • Metrikler: gecikme, filigran, p95/p99, DLQ, durum boyutu, kontrol noktası süresi.
  • Testler: sıra dışı, kopyalar, yeniden başlatılır, tekrar oynatılır.
  • Devlet ve anlık görüntüler için PII/saklama politikaları.
  • Ölçeklendirme planı ve geri basınç stratejileri.
  • Pencere sözleşmelerinin ve düzeltmelerin belgelenmesi (geç güncellemeler).

SSS

Etkinlik süresi gerekli mi?
Metriklerin doğruluğu ve tutarlılık önemliyse, evet. İşlem süresi teknik hesaplamalar/izleme için uygundur, ancak analitiği bozar.

Tam olarak bir kez gerekli mi?
Nokta: kritik etkiler için. Daha sık, en az bir kez + idempotent lavabo yeterlidir.

Pencereler nasıl seçilir?
İş SLA'ları üzerine inşa edin: "Son 5 dakika -" atlama ", kullanıcı oturumları -" oturum ", dakika raporları -" yuvarlanma.

Geç verilerle ne yapmalı?
Sınırlı 'allowed _ lateness'e izin verin ve ayarlamalar yapın (upsert/retract). Müşteri vitrini güncellenebilmelidir.

Toplam

Düşük gecikmenin yanı sıra, akış zaman, koşul ve sözleşmelerin bir disiplinidir. Doğru etkinlik zamanı, pencere ve filigran seçimi, ayrıca idempotent efektler, gözlemlenebilirlik ve testler boru hattını güvenilir, tekrarlanabilir ve ekonomik hale getirir ve işletmelere her gece değil, burada ve şimdi çözümler sunar.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.