Bosh sahifa Wiki Event Sourcing

Event Sourcing

Event Sourcingaggregate holatini joriy qiymat sifatida emas, uni o‘zgartirgan eventlar ketma-ketligi orqali saqlash modeli. U taqsimlangan messaging, event-driven arxitektura yoki ma’lumotlar bazasi ichki ishlashida aniq vazifani bajaradi. Kafolatlar implementatsiya va konfiguratsiyaga bog‘liq; atamaning o‘zi durability, ordering yoki consistency darajasini avtomatik belgilamaydi.

Asosiy tuzilma

Command invariantni tekshiradi va event chiqaradi. Event store append qiladi; aggregate replay orqali tiklanadi. Projectionlar query uchun read model yaratadi.

Event Sourcing alohida modul sifatida ko‘rinsa ham, uning natijasi qo‘shni qatlamlar bilan belgilanadi. Input qabul qilinishi, state persistent bo‘lishi va consumer yoki query natijasida ko‘rinishi turli vaqt nuqtalari bo‘lishi mumkin.

Jarayon bosqichlari

Oddiy CRUD joriy rowni yangilaydi. Event sourcing tarix va temporal auditni saqlaydi, lekin event logni database audit logi bilan tenglashtirib bo‘lmaydi: eventlar domain fact sifatida loyihalanadi.

Event Sourcing schema va protocol versiyasi bilan boshqariladi. Rolling upgrade vaqtida eski va yangi komponent identifier, timestamp, payload hamda errorni bir xil talqin qilishi kerak. Compatibility davri va eski variantni olib tashlash sharti oldindan belgilanadi. Event Sourcing uchun mas’ul komponent health signalidan tashqari, o‘zi himoya qiladigan invariant buzilmaganini ham davriy ravishda tekshiradi.

Event Sourcing boshqaruvida control plane va data plane farqlanadi. Configuration yoki assignment yangilangani haqidagi muvaffaqiyat javobi barcha worker yangi qoidani qo‘llay boshlaganini anglatmasligi mumkin. Propagation kechikishi o‘lchanadi, ikki versiya birga ishlaydigan davrda esa har ikkalasi tushunadigan format va xavfsiz fallback saqlanadi.

Ishonchlilik

Event immutable bo‘lgani uchun schema evolyutsiyasi, snapshot, projection rebuild va correction strategiyasi zarur. External side effect replay paytida takrorlanmasligi kerak.

Event Sourcing ko‘p tenantli muhitda isolation talab qiladi. Bitta tenantning katta querysi, sekin subscriptioni yoki ko‘p route’i umumiy memory va worker poolni egallamasligi uchun limit, fairness va backpressure ishlatiladi.

Correctness, latency, throughput va storage xarajati birga tanlanadi. Tezroq acknowledgement yoki ko‘proq parallelism kiritilganda buffer, ordering va recovery talablari o‘zgaradi. Shu sabab Event Sourcing bo‘yicha qaror faqat nominal benchmarkga tayanmaydi.

Kuzatuv

Event Sourcing benchmarki real key distribution, schema va concurrency’ni takrorlaydi. Uniform synthetic data hot partition, skew, lock conflict yoki yomon query planni yashirishi mumkin; warm-up va failure recovery natijalari alohida qayd etiladi.

Event Sourcing fault-injection sinovida delay, duplicate, process restart, disk full va partial network failure bittadan kiritiladi. Har tajriba boshlang‘ich state, software versiyasi va kutilgan invariant bilan qayta ishlab bo‘ladigan shaklda saqlanadi.

Event Sourcing samaradorligi percentile bo‘yicha baholanadi. O‘rtacha latency kam uchraydigan, ammo muhim lock wait, compaction pause yoki broker failoverni yashiradi; p95 va p99 qiymatlari error hamda queue metrikalari bilan birga tahlil qilinadi.

Event Sourcing bo‘yicha incidentdan keyin faqat kod xatosi emas, aniqlash va cheklash nega kechikkani ham tahlil qilinadi. Metrika, alert, runbook va ownershipdagi bo‘shliq alohida action itemga aylanadi. Tuzatish fault-injection bilan qayta sinovdan o‘tmaguncha muammo yopilgan deb hisoblanmaydi.

Event Sourcing o‘zgartirilgach normal oqim bilan birga malformed input, timeout, duplicate, restart va partial failure tekshiriladi. Qabul qilingan cheklovlar hujjatlashtiriladi; boshqa workload yoki platformaga ko‘r-ko‘rona ko‘chirilmaydi.

Bog‘liq tushunchalar

event store, aggregate, command, projection, CQRS, event replay