Circuit breaker pattern nima va nimaga kerak?
Assalamu Alaykum ,bugungi circuit breaker haqida va u bizga nega kerakligi haqida to'liq gaplashamiz. Qani boshladik !!!
Circuit Breaker nima ?
Circuit breaker bu elektr uskunasi bo'lib odatda hisoblagichdan so'ng o'rnatiladi va kuchlanish o'zgargan paytida elektr uy jihozlari kuymasligiga yordam beradi . Buni dasturlashga qanday aloqasi bor deyapsizmi ? Dasturlashdagi uslub shuning nomiga atab qo'yilgan .
Circuit Breaker — bu dasturning bir qismi bo'lib u bizga doimiy qaytariladigan xatolar hamda servisning qayta tiklanishiga ko'p vaqt ketadigan vaziyatlarda ularga qayta tiklanish va dasturning to'xtovsiz ishlab turishiga yordam beruvchi qism.
Misol siz qaysidir sizdan tashqaridagi servisga(third party) ulanadigan hamda sizda shu servisingizga bog’lanadigan servis bor . Sizning tashqi servisga bog’langan servisingiz tashqi servis ishlamayotgani uchun timeout bera boshladi (yoki so'rovlar shunchaki kutib turipti) va bu sizning shu servisingizdan foydalanayotgan barcha servislarga tasir qiladi. Shuni oldin olish va tezda so'rovga timeoutlarsiz javob qaytarishga circuit breaker yordam beradi.
Masalan, Microservicedagi timeoutlar yoki kechikishlar yoki databaza qulashi , yoki so'rovlar soni ko'payib ketgan holda cascading failures lardan saqlash uchun ishlatilinadi .
Cascading failure
Cascading failures — bu microservicelarda qaysidir servis qulashi orqali boshqa servislarning ham ketma-ket qulash holati.
Misol uchun sizda 3 ta A B C servislar bor edi har biri 100 ming foydalanuvchiga javob bera olardi . Siz dasturni ishga tushurayotganingizda A servisdan 60 ming B servicedan 20 ming C servicedan 30 ming foydalanuvchi foydalanayotgan edi . Sizning dasturingiz mashhurlashib A servisga yana 100ming foydalanuvchi qo'shildi buning natijasida A servisga 160 ming foydalanuvchi bo'ldi va so'rovlar ko'pligi tufayli A servis quladi va bu 160 ming so'rov B va C servis o'rtasida taqsimlandi .Bundan keyin B servisda 100 ming C servisda 110 ming foydalanuvchi bo'ldi va C servis undan so’ng B servis qulaydi va siz hech qaysi foydalanuvchiga javob berolmaysiz.
Circuit Breaker qanday ishlaydi ?
Circuit Breaker servisga so'rovlar kirishidan oldin turadi va o'zining holati (state)ga qarab so'rovni o'tkazish yoki o'tkazmaslikni hal qiladi.
Circuit Breakerda odatda 3ta holat(state) bo`ladi .
Closed
Open
Half-open
Closed bu holat servis to'liq ishlayapti so'rovlarni qabul qilish mumkin degani.
Open bu holatda servis hozir ishlamayapti yani 503 status kod qaytariladi so'rovlar servisga kirmasdan qaytib ketadi .
Half — Open bu holatda servis test holatida cheklangan miqdorda so'rov qabul qiladi va uning natijasiga qarab Open yoki Closed holatiga o’tadi.

Circuit Breaker qurishda e’tiborga olish kerakli narsalar:
Qachon Closed holatdan Open holatga o’tadi, odatda bu berilgan malum vaqtdagi so’rovlardagi xatoliklar foiziga qaraladi (50% odatda).
Half-Open holatiga qanchada o'tadi . Va bu holatda qo’shimcha qancha so'rov qabul qiladi va qaysi paytda Closed holatiga o’tishni belgilash
Statelar bir holatdan 2 chi holtga o’tgani loglarda ko`rinib turishi zarur qaysi xususiyatlar orqali o'tganiligi bu bizga circuit breaker to’g’ri ishlayotganini monitoring qilishga yordam beradi.
Qo'lda holatni o'zgartirish bu bizga servisni o'chirib qoy'ishimizda ma'lum muddatga yordam beradi.
Bundan ham boshqa narsalar bo'lishi mumkin bu sizning xoxishingizga hamda servis holatiga bog’liq boladi.
Bu yerda men Nestjs uchun yozgan circuit-breaker interceptor kodini ko`rishingiz mumkin !!
https://github.com/HabibovUlugbek/circuit-breaker
E’tiboringiz uchun rahmat !!! Xato va kamchiliklar uchun uzr .