GH GambleHub

Akym

Akym bejergisi näme?

Akym gaýtadan işlemek, ýagdaýlaryň iň az gijä galmagy we dogrulygyny kepillendirmek bilen, wakalaryň tükeniksiz yzygiderliligine (geleşikleriň, basmalaryň, tölegleriň, telemetriýanyň) üznüksiz reaksiýadyr. "Döwür üçin toplanan zatlaryň hemmesini alýan" batçdan tapawutlylykda, akym maglumatlary gelýänçä gaýtadan işleýär, ýagdaýy saklaýar we wakanyň wagtyny göz öňünde tutýar.

Esasy düşünjeler

Waka (event) - 'event _ time' we özboluşly 'event _ id' bilen üýtgewsiz hakykat.
Wakanyň wagty (event time) vs gaýtadan işlemek wagty (processing time) - birinjisi çeşmeden gelýär, ikinjisi - operator wakany hakykatdanam gören wagty.

Penjireler (windows) - wakalaryň wagt boýunça toparlanmagy:
  • Tumbling (örtülmez), Hopping/Sliding (örtükli), Session (hereketsizlik boşluklary).
  • Suw alamatlary (watermarks) - penjireleri ýapmaga we gijä galan maglumatlara garaşmagy çäklendirmäge mümkinçilik berýän "T pursatyndan öň wakalaryň gelendigini" çaklamak.
  • Gijä galan maglumatlar (lateness) - 'event _ time' wakalary häzirki watermark-dan az; gaýtadan işlemegiň düzgünleri köplenç ulanylýar.
  • State (state) - agregatlar, join's, deduplikasiýa üçin operatorlaryň ýerli tablisalary/ammarlary (keyed state).
  • Backpressure - downstream kuwwatyndan ýokary bolan basyş; teswirnama we buferler bilen dolandyrylýar.

Binagärlik esaslary

1. Çeşme: Wakalaryň brokeri (Kafka/NATS/Pulsar), DB-den CDC, nobatlar, faýllar/log-kollektorlar.
2. Akym hereketlendirijisi: penjireleri, agregatlary, joýnlary, patternleri (CEP) hasaplaýar, ýagdaýy we barlag nokatlaryny dolandyrýar.
3. Kabul ediji (sink): OLTP/OLAP DB, gözleg motory, keş, topikler, penjireler/hasabatlar üçin ammar.
4. Shemalaryň sanawy: payload ewolýusiýasyna we laýyklygyna gözegçilik etmek.
5. Syn edilişi: metrikler, treýsing, loglar, lagyň we suw belgileriniň daşbordlary.

Wagt we tertip semantikasy

Elmydama çäräni halaň: gijikdirilende we arakesmelerde bu ýeke-täk üýtgeşiklik.
Wakalar tertipden daşary gelip biler; tertip diňe partiýanyň açarynyň çäklerinde kepillendirilýär.

Watermarks:
  • penjireleri ýapmak we netijeleri çykarmak;
  • "Näçe garaşýandygymyzy" çäklendirmek ('allowed _ lateness').
  • Gijä galan wakalar üçin retractions/upserts: agregatlary we düzediş wakalaryny gaýtadan hasaplaň.

Ýagdaýy we ygtybarlylygy

Keyed state: Bu agregatlar (summalar, hasaplaýjylar, atanyň gurluşlary) şarding arkaly açarlar boýunça paýlanýar.
Checkpoint/Savepoint: dikeldiş üçin wagtal-wagtal suratlar; savepoint - kod görnüşiniň göçmegi üçin dolandyrylýan surat.

Exactly-once effekti boýunça gazanylýar:
  • "okadym-işledim-ýazdym" (commit sink + okamak pozisiýasy);
  • idempotent sinks (upsert/merge) + babyň tablisalary;
  • agregatlaryň wersiýasy (optimistic concurrency).

Penjireler, agregasiýalar, join's

Penjireler:
  • Tumbling: ýönekeý döwürleýin hasabatlar (minut, sagat).
  • Hopping/Sliding: "süýşýän" metrikler (1 minut ädim bilen 5 minutda).
  • Session: ulanyjy sessiýalary we antifrod üçin tebigy zat.
  • Aggregations: sum/count/avg/approx-distinct (HyperLogLog), percentiles (TDigest/CKMS).
  • Stream-Stream join: iki tarapyň hem açar we wagt boýunça buferlenmegini talap edýär, 'allowed _ skew' -e hormat goýuň.
  • Akym-Table join (KTable): gollanmany ýa-da häzirki ýagdaýy birikdirmek (mysal üçin, "ulanyjynyň işjeň çäkleri").

Giç we gaýtalanýan maglumatlar bilen işlemek

Duplikasiýa: 'event _ id' ýa-da '(producer_id, sequence)'; TTL bilen "görünýän" açarlary gaýtalanýan penjireler ≥ saklaň.
Late events: ýapylandan soň 'X' -de penjiräni täzeden düzmäge rugsat beriň (retractions/upserts).
Galp dublikatlar: agregatlary idempotent düzediň we "ALREADY_APPLIED" loglarda ýazyň.

Ölçeg we öndürijilik

Açar boýunça şardlamak: paralelligi üpjün edýär; "gyzgyn" açarlara gözegçilik ediň.
Backpressure: Paralelligi çäklendiriň, çap edilende batçi we gysyş ulanyň.
Suw bellikleri: gaty agressiw goýmaň - gaty suw marklary garaşmagy azaldýar, ýöne täzelenmeleriň paýyny ýokarlandyrýar.
Döwlet: elýeterlilik ölçeglerini we nusgalaryny göz öňünde tutup, formaty (RocksDB/state store/ýatda) saýlaň; TTL arassalaň.
Awtomatiki masştab: lagy, CPU, state ululygy, GC wagty boýunça.

Ygtybarlylyk we täzeden başlamak

Idempotent sink ýa-da ofseti düzmek bilen geleşik topary - dogrulygyň esasydyr.
Gaýtadan işe girizilenden soň gaýtadan işlemäge ýol berilýär; täsir "takyk bir gezek" galmalydyr.
DLQ/parking lot: kynçylykly ýazgylary sebäpler bilen aýratyn akymyna iberiň; gaýtadan işlemegi üpjün ediň.

Synlamak (näme ölçemeli)

Çeşmelere görä (wagt we habar boýunça).
Watermark/current event time we late-wakalaryň paýy.
Throughput/latency operatorlary, p95/p99 end-to-end.
State size/rocksdb I/O, ýygylygy/dowamlylygy.
DLQ rate, de duplikasiýalaryň/retraýlaryň göterimi.
CPU/GC/heap, arakesme wagty.

Howpsuzlyk we laýyklyk

Maglumatlaryň klassifikasiýasy: PII/PCI-ni shemalarda belläň, iň az saklaň, state we snapshotlary şifrläň.
Access control: state we sinks topiklerine aýratyn ACL.
Retensiýa: hukuk talaplaryna laýyk gelýär (GDPR/ýatdan çykarmak hukugy).
Audit: 'event _ id', 'trace _ id', netijesini ýazyň: 'APPLIED/ALREADY _ APPLIED/RETRIED'.

Giriş nusgalary

1. CDC → kadalaşma → domen wakalary: çig DB üýtgeşmelerini ýaýratmaň, düşnükli iş faktlaryna ýüz tutuň.
2. Öndürijilerde Outbox: amalyň hakykaty + waka - bir DB-amalda.
3. Core vs Enriched: möhüm akymda iň az töleg, baýlaşdyrmak - asinhron.
4. Replay-dostluk: proýeksiýalar/penjireler ýazgydan täzeden gurulmalydyr.
5. Idempotency by design: operation/event key, upsert-shemalar, agregatlaryň wersiýalary.

Synag

Unit/Property-based: agregatlaryň we üýtgeşmeleriň üýtgemegi.
Stream tests: out-of-order we dublikatlar bilen hadysalaryň kesgitlenen akymy → penjireleri we atany barlamak.
Golden Windows: Standart penjireler/agregatlar we giç düzedişler.
"Fault-injection": "effekt ýazdy" we "kommital ofset" arasynda düşmek.
Replay tests: sahypanyň başyndan penjiräni täzeden düzmek = häzirki ýagdaý.

Bahasy we optimizasiýasy

Penjireler we watermark gijikdirmä/çeşmelere täsir edýär: penjire näçe uzyn we 'allowed _ lateness' köp bolsa, şonça-da köp state.
Kodekler we gysyş: CPU/tory deňleşdiriň.
Çykyşda Batching: Az tor jaňlary we amallary.
Süzmek ir ("pushdown"): çeşmä mümkin boldugyça ýakynlaşyň.

Anti-patternler

Processing time-da, zerur bolan ýerinde baglanyşyk → nädogry analitika.
Restartlarda sink → iki esse täsir etmeýär.
Global "mega-açarlar": bir gyzgyn bölüm paralelligi bozýar.
Çig CDC jemgyýetçilik wakalary hökmünde: DB shemalarynyň syzmagy, ewolýusiýanyň gowşaklygy.
DLQ ýok: "zäherli" habarlar tutuş konweýeri petikleýär.
Watermark ýerine kesgitlenen gaty gijikdirme: ýa baky garaşmak ýa-da maglumatlary ýitirmek.

Domen mysallary

Tölegler/Maliýe

Akym 'payment.', antifrod üçin penjireler (session + CEP), 'operation _ id' üçin deadup.
Buhgalteriýa ledger (upsert + wersiýa).

Marketing/mahabat

CTR/konwersiýa penjiresini sliding, Join '± Δ t', bidding üçin agregasiýa.

iGaming/Onlaýn hyzmatlar

Real-wagt balans/çäklendirmeler, missiýalar/açuwlar (session penjireler), antifrod-patternler we duýduryşlar.

Kiçi şablonlar (psevdokod)

Suw belgili penjire

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)

Ofseti düzmek bilen geleşik sink

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

Önümçiligiň çek-sanawy

  • Wakanyň wagty we watermark strategiýasy kesgitlenildi; 'allowed _ lateness' penjireleri saýlandy.
  • Idempotent sink ýa-da ofset bilen geleşik topary.
  • Shemalaryň sanawy we laýyklyk düzgünleri girizildi; goşmaça ewolýusiýa.
  • Metrikler: lag, watermark, p95/p99, DLQ, state ululygy, checkpoint dowamlylygy.
  • Synaglar: out-of-order, dublikatlar, täzeden başlamalar, replay.
  • Döwlet we snapshotlar üçin PII/retensiýa syýasaty.
  • Ölçeg meýilnamasy we backpressure strategiýasy.
  • Penjire şertnamalary we düzedişler boýunça resminamalar (late updates).

FAQ

Waka wagty hökmanymy?
Metrleriň dogrulygy we sazlaşygy möhüm bolsa, hawa. Amal wagty tehniki hasaplar/gözegçilik üçin amatlydyr, ýöne analitikany ýoýýar.

exactly-once gerekmi?
Takyk: möhüm täsirler üçin. Köplenç at-least-once + idempotent sink ýeterlikdir.

Penjireleri nädip saýlamaly?
Iş SLA-dan başlaň: "soňky 5 minutda" → hopping, "ulanyjy sessiýalary" → session, "minutlyk hasabatlar" → tumbling.

Giç maglumatlar bilen näme etmeli?
Çäklendirilen 'allowed _ lateness' -e rugsat bermek we düzedişleri çykarmak (upsert/retract). Müşderi penjiresi täzelenip bilmelidir.

Jemi

Akym bejergisi diňe bir pes gijikdirme däl, eýsem wagtyň, ýagdaýyň we şertnamalaryň düzgünidir. Wakanyň wagty, penjireleri we suw belgilerini dogry saýlamak, üstesine-de, dempotent täsirleri, gözegçilik we synaglar konweýeri ygtybarly, köpeldip bolýan we tygşytly edýär - we işewürlige "gijeden soň" däl-de, "şu wagt we şu wagt" çözgütlerini berýär.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.