Failure detector — distributed tizimda boshqa process yoki node ishlamayotganini kuzatuvlar asosida taxmin qiladigan komponentdir. Tarmoqda javob kelmasligi node qulaganini isbotlamaydi: paket yo‘qolishi, kechikish, CPU bandligi yoki partition ham xuddi shunday ko‘rinadi. Shu sababli amaliy failure detector “muvaffaqiyatsiz” degan mutlaq haqiqat emas, suspicion darajasi va vaqtga bog‘liq qaror beradi.
Heartbeat va timeout
Eng oddiy usulda node davriy heartbeat yuboradi. Kuzatuvchi ma’lum vaqt ichida heartbeat olmasa uni suspect deb belgilaydi. Timeout juda qisqa bo‘lsa false positive ko‘payadi, juda uzun bo‘lsa haqiqiy nosozlikka javob sekinlashadi. Fixed timeout barqaror lokal tarmoqda yetarli bo‘lishi mumkin, o‘zgaruvchan cloud yoki global tarmoqda adaptive baholash foydaliroq.
Push modelda tekshirilayotgan node heartbeat jo‘natadi, pull modelda kuzatuvchi ping yuboradi. Gossip protokoli a’zolik va suspicionni node’lar orasida tarqatib, markaziy kuzatuvchiga bog‘liqlikni kamaytiradi. Indirect probe to‘g‘ridan-to‘g‘ri yo‘l ishlamasa boshqa node orqali tekshiradi va lokal tarmoq muammosini target qulashidan ajratishga yordam beradi.
Aniqlik xususiyatlari
Failure detector nazariyasida completeness qulagan process oxir-oqibat shubhali deb topilishini, accuracy esa sog‘lom process noto‘g‘ri gumon qilinmasligini ifodalaydi. Asinxron tizimda xabar kechikishining yuqori chegarasi noma’lum bo‘lsa, ikkalasini bir vaqtda mutlaq kafolatlash mumkin emas. Amaliy tizim eventual yoki probabilistic kafolat bilan ishlaydi.
Phi accrual detector bitta qat’iy timeout o‘rniga heartbeat interval tarixidan suspicion qiymatini hisoblaydi. Qiymat oshgani sari “bu kechikish odatiy taqsimotda qanchalik g‘ayrioddiy” degan baho kuchayadi. Threshold workload va xato xarajatiga mos tanlanadi; u universal konstanta emas.
Qarordan foydalanish
Suspect signal darhol resursni o‘chirib tashlash degani emas. Load balancer bir necha muvaffaqiyatsiz health checkdan keyin trafikni vaqtincha chetlashtirishi, membership tizimi esa tasdiqlash bosqichidan o‘tishi mumkin. Leader election consensus protokoli orqali bajariladi; faqat heartbeat yo‘qligiga qarab ikkita leader yaratish split-brain xavfini tug‘diradi.
Recovery paytida qaytgan node eski epoch yoki lease bilan yozmasligi kerak. Epoch, fencing va state reconciliation failure detector qarorini xavfsiz amaliyotga aylantiradi. Monitoring false positive, detection latency, heartbeat kechikishi va flappingni o‘lchaydi. Testlar process kill bilan cheklanmay, packet loss, asymmetric partition, uzun garbage collection pause va clock muammolarini ham simulyatsiya qiladi.
Health signal dizayni
Process javob berishi xizmat sog‘lomligini to‘liq anglatmaydi. Shallow check event loop ishlayotganini, deep check esa database yoki queue bog‘lanishini tekshiradi. Deep check umumiy dependency ishdan chiqqanda barcha instansiyani birdan unhealthy qilib, restart storm yaratishi mumkin. Load balancer readiness’ni trafik qabul qilishga, orchestrator liveness’ni processni qayta boshlashga ishlatadi; ikkala signal alohida thresholdga ega. Startup probe sekin yuklanadigan servisni erta o‘ldirishdan saqlaydi. Dependency holati, local saturation va application invariant bir metrikaga aralashtirilmaydi, shunda operator suspicion sababini ajrata oladi va noto‘g‘ri avtomatik recovery blast radiusini kengaytirmaydi.
Membership versiyasi
Node qayta ishga tushganda ayni nom bilan, ammo yangi incarnation sifatida ro‘yxatdan o‘tadi. Eski delayed heartbeat yangi processni “tiriltirib” yubormasligi uchun membership yozuvi incarnation yoki epoch raqamini saqlaydi. Removal va join xabarlari shu versiya bilan solishtiriladi. Observerlar turli vaqtda turli a’zolikni ko‘rishi mumkin, shuning uchun replica ownership yoki leader qarori faqat gossip suspicioniga emas, consensus yoki authoritative lease’ga tayanadi.
Bog‘liq tushunchalar
Heartbeat, Gossip protocol, Health check, Leader election, Network partition, Phi accrual, Split-brain