"Event-Driven" ýadrosy
"Event-Driven" ýadrosy näme?
"Event-Driven" ýadrosy (EDC) arhitekturanyň "oňurgasy" bolup, onda işewürlik faktlary üýtgewsiz hadysalar hökmünde ýazylýar we ýaýradylýar, galan funksionallyk (okamak, integrasiýa, analitika, nagt pul, bellikler) bolsa şol wakalaryň akymynyň üstünde gurulýar. Ýadro gowşak baglanyşygy we masştablanylygy üpjün edip, wakalaryň şertnamasyny, eltip bermegiň kadalaryny we tertip/idempotentligiň üýtgemelerini kesgitleýär.
Esasy pikir: ilki bilen hakykaty (özeni) ýazmak, soň bolsa özbaşdak baýlaşdyrmak we ony zerur modellere öwürmek. Bu bolsa baglanyşygy azaldýar we bölekleýin şowsuzlyklara garşylygy ýokarlandyrýar.
EDC maksatlary we aýratynlyklary
Faktlaryň hakykylygy: her bir waka - "näme boldy" diýen üýtgewsiz ýazgy.
Gowşak baglanyşyk: öndürijiler sarp edijileri bilmeýärler; ulgamy giňeltmek - abonentleri goşmak.
Masştab: partiýa/topik boýunça gorizontal ösüş, garaşsyz sarp edijiler.
Gözegçilik we audit: üsti bilen kesgitleýjiler, gaýtalanma, retensiýa we täzeden oýnamak.
Dolandyrylýan ewolýusiýa: shemalaryň wersiýalary, gabat gelmek, deprecation.
Binagärlik komponentleri
1. Şina/waka brokeri: Kafka/NATS/Pulsar/SNS + SQS - kanallar, partiýa, retensiýa.
2. Shemalaryň sanawy: JSON Schema/Euro/Protobuf gabat gelmek we ewolýusiýa üçin.
3. Outbox/CDC-kontury: faktyň atomiki düzedilmegi + "goşa ýazgy" bolmazdan çap etmek.
4. Proýeksiýalar/okalar (CQRS): çalt soraglar üçin materiallaşdyrylan pikirler.
5. Saga/orkestr: wakalar/toparlar arkaly uzak möhletli prosesleri utgaşdyrmak.
6. Baýlaşdyrmak: aýratyn topikler '.enriched '/' .derived' kritiki ýolda täsir etmezden.
7. Gözegçilik etmek: trasirlemek, logirlemek, wakalar we laglar boýunça metrikler.
Waka modeli
Wakalaryň görnüşleri
Domain Events: iş faktlary ('payment. authorized`, `kyc. approved`).
Integration Events: daşarky ulgamlara gönükdirilendir (durnukly, haýal üýtgeýär).
Change Data Capture (CDC): ýazgynyň tehniki üýtgemeleri (göçmek/integrasiýa üçin ulanyň).
Audit/Telemetry: aktorlaryň hereketleri, howpsuzlyk, SLA.
Hökmany atributlar (ýadro)
json
{
"event_id": "uuid",
"event_type": "payment. authorized. v1",
"occurred_at": "2025-10-31T11:34:52Z",
"producer": "payments-service",
"subject": { "type": "payment", "id": "pay_123" },
"payload": { "amount": 1000, "currency": "EUR", "method": "card" },
"schema_version": 1,
"trace_id": "abc123",
"partition_key": "pay_123"
}
Teklipler: 'event _ id' global taýdan üýtgeşik, 'partition _ key' düýp manysy üçin tertibi kesgitleýär, 'trace _ id' baglanyşygy üpjün edýär.
Gowşuryş semantikasy we idempotentlik
At-least-once (köp dellallarda adaty): sarp edijiler idempotent bolmaly.
At-most-once: diňe ikinji derejeli telemetriýalar üçin kabul ederlikli.
Exactly-once: amallar/idempotent açarlary/leýkalary arkaly akym we ammar derejesinde gazanylýar (has gymmat, gowy sebäp gerek).
Sarp edijiniň idempotentlik şablony
'event _ id '/' (event_id, consumer_id)' TTL-den topik retensiýasyna ≥.
Insert ýerine Upsert; 'sequence '/' occurred _ at' proýeksiýalarynyň wersiýasy.
Geleşigiň çägindäki amallar: "gördüm" belgisi + ýagdaýyň üýtgemegi.
Tertibi we partiýa ýerleşdirilmegi
Partiýanyň çäklerinde kepillendirilen tertip.
"Partition _ key" -ni bir manyda bolan ähli wakalaryň bir partiýa girmegi üçin saýlaň ('user _ id', 'payment _ id').
"Gyzgyn açarlardan" gaça duruň: ýüküň paýlanmagy talap edilse, duzly/aşaky açarly heş.
Shemalar we ewolýusiýa
Additive-first: täze opsiýa meýdanlary, major-wersiýasy bolmazdan görnüşini/semantikasyny üýtgetmegi gadagan etmek.
Gabat gelmek: Shemalaryň sanawynda BACKWARD/FORWARD; CI gabat gelmeýän üýtgeşmeleri bloklaýar.
Adynyň ady: 'domain. action. v{major}` (`payment. authorized. v1`).
Göçmek: parallel 'v1' we 'v2' jübütlerini çap ediň, goşa radiasiýa beriň (outbox arkaly dual-write), geçişden soň 'v1' -ni çykaryň.
Outbox и CDC
Outbox (amal hyzmatlary üçin maslahat berilýär)
1. Bir DB amalynda: domen ýazgysyny we wakany outbox-da saklaýarys.
2. Fon köpçüligi outbox okaýar, dellalda çap edýär, "iberildi" diýip bellik edýär.
3. Kepillikler: güýzde "ýitgi" fakty ýok, sinhronizasiýa ýok.
CDC (Change Data Capture)
Bar bolan ulgamlar/migrasiýa üçin amatly; çeşme - DB-iň göçürme ýazgysy.
Domen hadysalaryny süzmegi/kodlamagy talap edýär ("çig" tablisalary daşardan ýaýratmaň).
CQRS we proýeksiýalar
Toparlar ýagdaýy üýtgedýärler (köplenç sinhron), wakalar - proýeksiýalary emele getirýärler (asinhron).
Proýeksiýalar haýyşlar (gözleg, sanawlar, hasabatlar) üçin niýetlenendir, abonentler tarapyndan täzelenýär.
Wagtlaýyn sinhronizasiýa: durnukly UX görkeziň ("maglumatlar birnäçe sekuntdan soň täzelener").
Saglar: prosesleri utgaşdyrmak
Orkestr: bir koordinator buýruklar iberýär we wakalara garaşýar.
Horeografiýa: gatnaşyjylar biri-biriniň wakalaryna reaksiýa bildirýärler (has aňsat, ýöne şertnamalarda tertip-düzgüni talap edýär).
Düzgünler: anyk kompensasiýa we taým-autlar, gaýtalanýan ädimler, dempotent işläp taýýarlaýjylar.
Synlamak
Trace/Span: 'trace _ id '/' span _ id' wakalar ýüze çykanda sözbaşylar arkaly zyňyň.
Metrikler: sarp edijileriň yzy, çap/sarp ediş tizligi, dead-letter rate, deduplikasiýalaryň paýy.
DLQ/parking lot: şowsuz habarlar - alert bilen aýratyn topik; gaýtadan işlemegi üpjün ediň.
Howpsuzlyk we laýyklyk
Maglumatlaryň klassifikasiýasy: ýadro diňe zerur bolan PII/findany (ters piramida modeli) öz içine alýar, jikme-jiklikler - baýlaşdyrylýar.
Kritiki atributlaryň goly/heşi, bitewiligiň gözegçiligi.
In-flight we at-rest şifrlemek, mowzuklar/maslahatlar boýunça hukuklary bölmek (IAM/ACL).
Retensiýa syýasaty we ýatdan çykarmak hukugy: her topik üçin anyk kesgitlenildi.
Öndürijilik we durnuklylyk
Backpressure: sarp edijilerde - bäsdeşlik çäkleri, dellalda - kwotalar/çäkler bar.
Batch-gaýtadan işlemek we gysmak: goşmaça çykdajylary azaltmak üçin ýazgylary toparlanyň.
Tükeniksiz synanyşyklaryň ýerine jitter we DLQ bilen retrailer.
Rebalance-çydamlylyk: Ofsetleri geleşik/daşarda saklaň, sowuk başlamagy snapshotlar bilen çaltlaşdyryň.
Adaty wakalar şablonlary
Tölegleriň özeni
`payment. initiated. v1` → `payment. authorized. v1` → `payment. captured. v1` → `payment. settled. v1`
Şowsuzlyklar: 'payment. declined. v1`, `payment. refunded. v1`
Partiýa: 'payment _ id'
SLA: ýadro lag ≤ 2s p95; sarp edijileriň duýgurlygy hökmanydyr.
KUS/barlamak
`kyc. started. v1` → `kyc. document. received. v1` → `kyc. approved. v1`/`kyc. rejected. v1`
PII - iň az; resminamanyň jikme-jiklikleri - içinde 'kyc. enriched. v1 'giriş çäkli.
Audit/Howpsuzlyk
`audit. recorded. v1 'actor', 'subject', 'action', 'occurred _ at', 'trace _ id' atributlary bilen.
Üznüksiz retensiýa/arhiw; has ýokary bitewilik (WORM-ammar).
Anti-patternler
Fat Event: gereksiz ýüklenen payload 'lar, PII syzmagy.
Wakalar arkaly Hidden RPC: "şu wagt we şu wagt" sinhron jogaplara garaşmak.
Çig CDC daşardan: DB shemasy bilen ýakyn baglanyşyk.
Sarp edijilerde duýgurlyk ýok: goşa täsirlere sebäp bolýar.
Bir umumy "hemme zada": gyzyklanma gapma-garşylygy, problemaly tertip, çylşyrymly ewolýusiýa.
EDC-ni ädimme-ädim ornaşdyrmak
1. Domen kartlary: esasy agregatlary we durmuş sikllerini saýlaň.
2. Wakalaryň katalogy: atlar, manylar, üýtgeşikler, hökmany meýdanlar.
3. Shemalar we reýestr: Formaty saýlaň, laýyklyk düzgünlerini goşuň.
4. Outbox/CDC: her prodýuser üçin faktlary çap etmegiň mehanizmini kesgitläň.
5. Partiýa: Açarlary saýlaň we gyzgyn açarlary/bölekleri bahalandyryň.
6. Idempotentlik: debut şablony + sarp edijileriň amallary.
7. Proýeksiýalar: materiallaşdyrylan modelleri we SLA täzelenmelerini kesgitläň.
8. Gözegçilik etmek: ýollar, laglar, DLQ, aladalar.
9. Howpsuzlyk/PII: maglumatlaryň klassifikasiýasy, şifrlemek, ACL.
10. Ewolýusiýa boýunça gollanma: wersiýa syýasaty, deprekeýt, migrasiýa üçin dual-write.
Öndürilen çek sanawy
- Her bir hadysada 'event _ id', 'trace _ id', 'occurred _ at', 'partition _ key' bar.
- Sanawdaky shemalar, laýyklyk barlaglary girizildi.
- Sarp edijileriň deňligi amala aşyryldy we synagdan geçirildi.
- DLQ/parking lot we neşiriň/sarp etmegiň ýalňyşlyklary üçin töwekgelçilikler.
- Proýeksiýalar logdan (replay) kabul ederlikli wagt bilen gaýtadan iberilýär.
- PII-e giriş çäklendirildi; ýadroda iň az payload 'lar.
- Laglar/eltip bermek boýunça SLA-lar ölçenilýär we daşkynlarda görünýär.
- Wakalaryň wersiýalaryny we penjirelerini göçürmek üçin meýilnama bar.
FAQ
EDC "diňe tekerden" nähili tapawutlanýar?
Esasy diňe bir dellal däl, eýsem wakalaryň şertnamasy, tertip-düzgüniň/idempotentligiň düzgünleri, ewolýusiýa prosesleri we syn edilişdir.
Diňe CDC-de gurup bolarmy?
CDC integrasiýa/migrasiýa üçin amatlydyr, ýöne domen wakalary manysyny has aýdyň görkezýär we DB üýtgeşmelerini has durnukly başdan geçirýär.
Ylalaşmak barada näme aýdyp bilersiňiz?
Eventual consistency kabul edýäris we onuň üçin UX/prosesleri (täzeleniş, retra, kompensasiýa görkezijileri) dizaýn edýäris.
Haçan exactly-once gerek?
Seýrek: iki esse köpeltmek düýbünden kabul ederliksiz we öwezini dolmak mümkin däl. Köplenç at-least-once + idempotentlik ýeterlikdir.
Jemi
"Event-Driven" ýadrosy işewürlik faktlarynyň akymyny ulgamyň ygtybarly binýadyna öwürýär. Wakalaryň anyk şertnamalary, eltip bermegiň tertibi we syn edilmegi ulalmagy, durnuklylygy we ewolýusiýanyň tizligini üpjün edýär - gowşak sinhron baglanyşyklar we üýtgeşmeler wagtynda regressiýanyň "tupany" bolmazdan.