Bosh sahifa Wiki Fault tolerance

Fault tolerance

Fault tolerance — tizimning ayrim komponentlari nosoz bo‘lsa ham belgilangan xizmatni to‘g‘ri yoki nazoratli ravishda davom ettirish qobiliyatidir. U nosozlikni butunlay yo‘qotmaydi; xatoni aniqlash, izolyatsiya qilish, ortiqcha nusxaga o‘tish va holatni tiklash orqali ta’sirni cheklaydi. Kafolat qaysi fault modelga nisbatan berilgani aniq bo‘lishi kerak.

Fault, error va failure

Fault — disk sektori buzilishi yoki dasturiy xato kabi sabab. U ichki holatda error hosil qiladi. Error tashqi xizmat talabini buzsa, failure kuzatiladi. Har fault darhol failurega aylanmaydi: checksum buzilgan blokni aniqlab, sog‘lom replikadan o‘qisa foydalanuvchi xato ko‘rmaydi.

Crash fault tugun butunlay to‘xtashini, omission xabar yuborilmasligi yoki olinmasligini, timing fault javob muddatdan chiqishini bildiradi. Byzantine fault komponent ixtiyoriy yoki qarama-qarshi natija yuborishini qamrab oladi. Byzantine tolerant protokol oddiy crash tolerant replikatsiyadan kuchliroq va qimmatroq.

Redundancy

Active–passive arxitekturada zaxira tugun asosiy tugun nosoz bo‘lganda ishga tushadi. Active–active bir nechta tugun bir vaqtda trafik qabul qiladi. N+1 sxema maksimal yuk uchun zarur N komponentga bitta zaxira qo‘shadi. Redundancy bir xil elektr manbai, rack yoki dastur versiyasiga bog‘langan bo‘lsa, common-mode failure barchasini birga to‘xtatishi mumkin.

Ma’lumot replikatsiyasi disk yoki tugun yo‘qolishiga chidamlilik beradi. Synchronous replika commitdan oldin tasdiqlab, RPOni kamaytiradi, lekin latency va availabilityga ta’sir qiladi. Asynchronous replika tezroq, ammo failoverda oxirgi yozuvlar yo‘qolishi mumkin. Erasure coding kamroq joy bilan bir nechta fragment yo‘qolishiga chidashi, qayta tiklashda ko‘proq hisoblash va tarmoq talab qilishi mumkin.

Aniqlash va failover

Health check yuzaki port ochiqligidan ko‘ra xizmatning kritik bog‘liqliklarini tekshirishi kerak, ammo juda og‘ir check o‘zi yuk yaratadi. Timeout va heartbeat false positive hamda detection delay o‘rtasida muvozanat qiladi. Failover avtomatik bo‘lsa, split-brainning oldini olish uchun quorum, lease yoki fencing ishlatiladi. Fencing eski primaryning shared storagega yozishini jismonan yoki mantiqan to‘xtatadi.

Stateless servisni qayta ishga tushirish osonroq. Stateful servis WAL, checkpoint va consensus log yordamida davom etadi. In-flight so‘rov natijasi noaniq bo‘lishi mumkin; mijoz retry qilsa idempotency zarur. Recovery vaqtida eski va yangi tugun ayni ishni takrorlamasligi kerak.

Graceful degradation

Barcha funksiyani saqlash imkonsiz bo‘lsa, tizim muhim yo‘lni davom ettiradi. Masalan, tavsiya moduli ishlamasa katalog default tartibda ko‘rsatiladi, yozish xavfli bo‘lsa xizmat read-only rejimga o‘tadi. Degradatsiya yashirin noto‘g‘ri natija bermasligi, foydalanuvchi va operatorga holatni bildirish kerak.

Fault tolerance backup o‘rnini bosmaydi: noto‘g‘ri o‘chirish barcha replikaga tarqaladi. Chaos testing nazoratli nosozlik kiritib, taxminlarni tekshiradi. RTO, RPO, error budget, failover va qayta sinxronlash vaqti o‘lchanadi. Eng ishonchli dizayn faqat komponent sonini ko‘paytirmaydi, mustaqil failure domain va muntazam tiklash mashqini ta’minlaydi.

Xatolarni izolyatsiya qilish

Bulkhead pattern resurs poollarini ajratib, bitta sekin dependency barcha worker yoki ulanishni band qilishini cheklaydi. Circuit breaker ketma-ket xatolardan keyin yangi chaqiruvni vaqtincha rad etib, tizimga tiklanish imkonini beradi. Rate limit va load shedding overloadni faultga aylanishidan oldin kamaytiradi. Ushbu himoyalar noto‘g‘ri threshold bilan qonuniy trafikni to‘xtatishi mumkin, shuning uchun holat, sabab va recovery transitionlari kuzatiladi.

Bog‘liq tushunchalar

High availability, Redundancy, Failover, Replication, Recovery, RTO, RPO