GH GambleHub

Axın emalı

Axın emalı nədir

Axın emalı - minimal gecikmə və vəziyyətlərin düzgünlüyünə zəmanət verən sonsuz hadisələr ardıcıllığına (əməliyyatlar, kliklər, ödənişlər, telemetriya) davamlı reaksiyadır. «Bir müddət ərzində yığılan hər şeyi götürdüyümüz» batçdan fərqli olaraq, axın daxil olduqda məlumatları emal edir, vəziyyəti saxlayır və hadisənin vaxtını nəzərə alır.

Açar anlayışlar

Hadisə (event) - 'event _ time' və unikal 'event _ id' ilə dəyişməz faktdır.
Hadisə vaxtı (event time) vs emal vaxtı (processing time) - birincisi mənbədən gəlir, ikincisi - operator hadisəni həqiqətən gördükdə.

Pəncərələr (windows) - hadisələrin vaxt qruplaşması:
  • Tumbling (örtülməz), Hopping/Sliding (örtüklü), Session (aktiv olmayan boşluqlar).
  • Su işarələri (watermarks) - pəncərələri bağlamağa və gecikmiş məlumatların gözləntilərini məhdudlaşdırmağa imkan verən «T anına qədər hadisələr artıq gəldi» qiymətləndirməsi.
  • Gecikmiş məlumatlar (lateness) - 'event _ time' hadisələri cari watermark-dan azdır; tez-tez təkmilləşdirmə qaydaları tətbiq olunur.
  • State (state) - aqreqatlar, join 's, deduplikasiya üçün operatorların lokal cədvəlləri/anbarları (keyed state).
  • Backpressure - downstream həddini aşdıqda təzyiq; protokol və buferlər tərəfindən idarə olunur.

Memarlıq əsasları

1. Mənbə (mənbə): hadisə brokeri (Kafka/NATS/Pulsar), DB-dən CDC, növbələr, fayllar/log kollektorları.
2. Axın mühərriki: pəncərələri, aqreqatları, coynları, nümunələri (CEP) hesablayır, vəziyyəti və yoxlamaları idarə edir.
3. Alıcı (sink): OLTP/OLAP DB, axtarış motoru, cache, topics, vitrin/hesabat anbarları.
4. Sxemlərin reyestri: payload təkamül və uyğunluq nəzarət.
5. Müşahidə: metriklər, treysinq, loqlar, lag və su işarələrinin daşbordları.

Zaman semantikası və nizam

Həmişə hadisə vaxtına üstünlük verin: gecikmələr və fasilələr zamanı bu yeganə alternativdir.
Hadisələr sıradan çıxa bilər; sifariş yalnız partiyanın açarı daxilində təmin edilir.

Watermarks imkan verir:
  • pəncərələri bağlamaq və nəticələri buraxmaq;
  • gecikmiş hadisələri ('allowed _ lateness') məhdudlaşdırmaq.
  • Gecikmiş hadisələr üçün retractions/upserts istifadə edin: aqreqatların yenidən hesablanması və düzəliş hadisələri.

Dövlət və etibarlılıq

Keyed state: aqreqatların məlumatları (məbləğlər, sayğaclar, babanın strukturları) açarlar üzrə paylanır.
Checkpoint/Savepoint: bərpa üçün dövri vəziyyət şəkilləri; savepoint - kod versiyasının miqrasiyası üçün idarə olunan şəkil.

Exactly-once effekti ilə əldə edilir:
  • əməliyyat «oxu-emal-qeyd» (commit sink + oxu mövqeyi);
  • idempotent sinks (upsert/merge) + dedup cədvəllər;
  • aqreqatların versiyalaşdırılması (optimistic concurrency).

Pəncərələr, aqreqasiyalar, join's

Pəncərələr:
  • Tumbling: sadə dövri hesabatlar (dəqiqə, saat).
  • Hopping/Sliding: «sürüşmə» metriklər (1 dəq addım ilə 5 dəq).
  • Session: xüsusi sessiyalar və antifrod üçün təbii.
  • Aggregations: sum/count/avg/approx-distinct (HyperLogLog), percentiles (TDigest/CKMS).
  • Stream-Stream join: hər iki tərəfin açar və vaxt tamponlaması tələb edir, 'allowed _ skew' -ə hörmət edin.
  • Stream-Table join (KTable): məlumat kitabçasına və ya cari vəziyyətə qoşulma (məsələn, «aktiv istifadəçi limitləri»).

Gecikmiş və təkrarlanan məlumatlarla işləmək

Deduplikasiya: 'event _ id' və ya '(producer_id, sequence)'; TTL ≥ təkrar pəncərələri ilə «görünən» açarları saxlayın.
Late events: qapandıqdan sonra 'X' ərzində pəncərənin yenidən işlənməsinə icazə verin (retractions/upserts).
Saxta təkrarlar: aqreqatları idempotent qaydasında düzəldin və «ALREADY_APPLIED» lojalara yazın.

Ölçmə və performans

Açar çardaqlama: paralelliyi təmin edir; «isti» açarları izləyin.
Backpressure: paralelliyi məhdudlaşdırın, dərc edərkən batches və sıxışdırmadan istifadə edin.
Su işarələri: çox aqressiv qoymayın - sərt watermarks gözləntiləri azaldır, lakin late yeniləmələrin payını artırır.
Hal: ölçüsü və giriş nümunələri nəzərə alınmaqla (RocksDB/state store/yaddaş) formatını seçin; TTL təmizləyin.
Avtomatik miqyaslandırma: lag, CPU, state ölçüsü, GC vaxtı.

Etibarlılıq və yenidən başlamaq

İdempotent sink və ya ofset fiksasiyası ilə əməliyyat kommiti düzgünlüyün əsasını təşkil edir.
Yenidən başladıqdan sonra təkrar emala icazə verilir; effekt «düz bir dəfə» qalmalıdır.
DLQ/parking lot: problemli qeydləri səbəbləri ilə ayrı bir axına göndərin; təkrar emal təmin edin.

Müşahidə (ölçmək üçün)

Mənbələrə görə Lag (vaxtına və mesajına görə).
Watermark/current event time və late hadisələrin payı.
Throughput/latency operatorları, p95/p99 end-to-end.
State size/rocksdb I/O, tezlik checkpoint 's/uzunluğu.
DLQ rate, deduplikasiya/retraj faizi.
CPU/GC/heap, fasilə vaxtı.

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

Verilənlərin təsnifatı: PII/PCI sxemlərdə qeyd edin, minimum saxlayın, state və snapshotları şifrələyin.
Access control: topik/state cədvəllər və sinks ayrı-ayrı ACL.
Retens: hüquqi tələblərə uyğundur (GDPR/unudulmaq hüququ).
Audit: log 'event _ id', 'trace _ id', nəticə: 'APPLIED/ALREADY _ APPLIED/RETRIED'.

Tətbiq nümunələri

1. CDC → normalizasiya → domen hadisələri: xam DB dəyişikliklərini yayımlamayın, başa düşülən biznes faktlarına map edin.
2. Outbox istehsalçılarda: əməliyyat faktı + hadisə - bir DB əməliyyatında.
3. Core vs Enriched: kritik axınında minimum payload, zənginləşdirmə - asenxron.
4. Replay-dostluq: proyeksiyalar/vitrinlər logdan yenidən yığılmalıdır.
5. Idempotency by design: operation/event key, upsert sxemləri, aqreqatların versiyaları.

Test

Unit/Property-based: aqreqat və transformasiya invariantları.
Stream tests: out-of-order və dublikatlar ilə sabit hadisələr axını → Windows və babanın yoxlama.
Golden Windows: istinad pəncərələri/aqreqatları və icazə verilən gec düzəlişlər.
Fault-injection: arasında düşməsi «qeyd effekti» və «kommitul ofset».
Replay tests: log başlanğıcından vitrin yenidən yığılması = cari vəziyyət.

Qiymət və optimallaşdırma

Pəncərələr və watermark gecikmə/resursları təsir edir: pəncərə nə qədər uzun və daha çox 'allowed _ lateness', daha çox state.
Codec & Kompression: CPU/Network balans.
Çıxış Batching: daha az şəbəkə zəngləri və əməliyyatlar.
Erkən filtrasiya («pushdown»): mənbəyə mümkün qədər çox atın.

Antipatternlər

Processing time-da bağlanma, hadisə vaxtı lazım olan yerdə → yanlış analitika.
sink yoxluğu → restarts ikiqat effekt.
Qlobal mega-açarlar: bir isti bölmə paralelliyi pozur.
İctimai hadisələr kimi xam CDC: DD sxemlərinin sızması, təkamül zamanı kövrəklik.
DLQ yoxdur: «zəhərli» mesajlar bütün konveyeri bloklayır.
Watermark əvəzinə sabit sərt gecikmə: ya əbədi gözləmə, ya da məlumat itkisi.

Domen nümunələri

Ödənişlər/Maliyyə

Axın 'payment.', antifrod pəncərələri (session + CEP), dedup 'operation _ id'.
Mühasibat ledger (upsert + versiyası) yayılması zamanı Exactly-once effekti.

Marketinq/Reklam

Sliding pəncərə CTR/dönüşüm, Join klikləri və '± Δ t' tolerantlığı ilə nümayişlər, biddinq üçün yığma.

iGaming/onlayn xidmətlər

Real-time balans/limitləri, missiyalar/açivka (session pəncərə), anti-pattern və xəbərdarlıq.

Mini şablonlar (psevdokod)

Su işarələri və late yeniləmələri olan pəncərə

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 fiksasiyası ilə əməliyyat sink

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

Production çek siyahısı

  • Müəyyən hadisə vaxt və watermark strategiyası; və 'allowed _ lateness' pəncərələri seçilmişdir.
  • Idempotent sink və ya ofset ilə əməliyyat kommit.
  • Sxemlərin reyestri və uyğunluq rejimləri daxildir; əlavə təkamül.
  • Metriklər: lag, watermark, p95/p99, DLQ, state ölçüsü, checkpoint müddəti.
  • Testlər: out-of-order, təkrarlamalar, yenidən başlamalar, replay.
  • state və snapshots üçün PII/Retance siyasəti.
  • Ölçü planı və backpressure strategiyaları.
  • Pəncərə müqavilələri və düzəlişlər sənədləşdirilməsi (late updates).

FAQ

Event time tələb olunur?
Metriklərin düzgünlüyü və uyğunluğu vacibdir, bəli. Processing time texniki hesablar/monitorinq üçün uyğundur, lakin analitikanı təhrif edir.

exactly-once lazımdır?
Dəqiq: kritik effektlər üçün. Daha çox at-least-once + idempotent sink kifayətdir.

Pəncərələri necə seçmək olar?
Biznes SLA-dan başlayın: «son 5 dəqiqədə» → hopping, «istifadəçi sessiyaları» → session, «dəqiqə hesabatları» → tumbling.

Gec məlumatlarla nə etmək lazımdır?
Məhdud 'allowed _ lateness' və düzəlişləri (upsert/retract) buraxmağa icazə ver. Müştəri vitrini yenilənməlidir.

Yekun

Axın emalı yalnız aşağı gecikmə deyil, həm də zaman, vəziyyət və müqavilələrin intizamıdır. Doğru hadisə vaxtı, pəncərələr və su işarələri seçimi, üstəgəl idempotent effektləri, müşahidə və testlər konveyeri etibarlı, təkrarlanabilir və qənaətcil edir - və biznesə «gecə» deyil, «burada və indi» həllərini 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.