Two-Phase Set — element qo‘shish va olib tashlashni ikkita alohida grow-only to‘plam orqali ifodalovchi state-based CRDT. U taqsimlangan data, tranzaksiya, consensus, partitioning yoki cache tizimlaridagi muayyan vazifani ifodalaydi. Aniq kafolatlar protocol va platforma hujjatiga bog‘liq; o‘xshash nomlangan implementatsiyalar bir xil failure semantikasini bermasligi mumkin.
Asosiy tuzilma
2P-Set add-set va remove-set saqlaydi. Element mavjud deb hisoblanishi uchun u add-setda bo‘lishi va remove-setda bo‘lmasligi kerak. Merge har ikkala to‘plam uchun union orqali bajariladi, shuning uchun replica’lar xabar tartibidan qat’i nazar converge qiladi.
Two-Phase Set alohida feature emas, client, tarmoq, persistent storage va boshqaruv qoidalari bilan birga ishlaydi. Bir qatlamdagi muvaffaqiyat keyingi qatlamda effect commit bo‘lganini avtomatik bildirmaydi. Shu sabab request qabul qilinishi, durable yozuv va visible natija nuqtalari alohida qayd etiladi.
Ishlash mexanizmi
Element remove-setga tushgach qayta qo‘shib bo‘lmaydi. Bu oddiy setdan muhim farq: delete doimiy tombstone qoldiradi. Qayta qo‘shish kerak bo‘lsa observed-remove set kabi murakkabroq CRDT tanlanadi.
Two-Phase Set uchun failure boundary aniq belgilanadi. Process restarti, host yo‘qolishi, network partition va storage corruption turli recovery talab qiladi. Timeout faqat kutilgan javob kelmaganini bildiradi; operatsiya bajarilgan yoki bajarilmaganini isbotlamaydi. Noaniq natija client API’da alohida status va qayta tekshirish yo‘li bilan ifodalanadi.
Semantika va farqlar
Remove-set faqat o‘sadi va storage sarfi vaqt o‘tishi bilan ko‘payadi. Tombstone’ni xavfsiz tozalash uchun barcha replica delete’ni ko‘rganini isbotlaydigan causal yoki membership ma’lumoti talab qilinadi.
Two-Phase Set uchun compatibility matritsasi protocol, storage format va client versiyasini qamrab oladi. Rolling upgrade paytida eski va yangi instance birga ishlashi sinovdan o‘tadi. Vaqtinchalik dual-read yoki dual-write yo‘li kiritilsa, tafovut metrikasi va uni olib tashlash sharti oldindan belgilanadi.
Two-Phase Set dizaynida correctness, latency va availability o‘rtasidagi muvozanat workload bilan birga tanlanadi. Qat’iyroq guarantee ko‘proq coordination talab qilishi, zaifroq model esa merge yoki compensation vazifasini applicationga yuklashi mumkin. Nominal throughput bunday semantik xarajatni to‘liq ko‘rsatmaydi.
Amaliy nazorat
Two-Phase Set diagnostikasida aggregate dashboarddan xom dalilga o‘tiladi. Request ID, key yoki transaction bo‘yicha trace, log, queue va storage state bir vaqt chizig‘iga qo‘yiladi. Clock farqi bo‘lsa logical index yoki correlation metadata ishlatiladi.
Two-Phase Set recoverydan keyin data tekshiruvi bilan yakunlanadi. Service qayta ochilishidan oldin replica progress, pending transaction, cache generation yoki shard ownership mosligi tasdiqlanadi. Faqat process health checkdan o‘tishi data to‘g‘riligini isbotlamaydi. Repair jarayoni o‘zi yangi yuk yaratishi mumkin, shuning uchun bandwidth va concurrency cheklanadi. Recovery davomida clientga stale, read-only yoki unavailable rejimlaridan qaysi biri ko‘rsatilishi oldindan belgilanadi.
Two-Phase Set holatini kuzatish uchun configuration version, key yoki transaction scope, resource counter, error log va zarur trace birlashtiriladi. Natija qayta tekshirilishi uchun software versiyasi, test topologiyasi, kiritilgan fault va kutilgan invariant saqlanadi. Baholash bitta log satriga emas, o‘zaro mos state hamda o‘lchovlarga asoslanadi.
Two-Phase Set bo‘yicha qabul qilingan cheklovlar hujjatlashtiriladi va boshqa workloadga avtomatik ko‘chirilmaydi. O‘zgarishdan keyin muvaffaqiyatli oqim bilan birga timeout, duplicate, restart, stale state va partial failure javobi ham tasdiqlanadi.
Bog‘liq tushunchalar
2P-Set, G-Set, CRDT, tombstone, set union, observed-remove set