Circuit Breaker жана деградация
Circuit Breaker (CB) - бул бузулган көз карандылыкка чакырыктарды үзгүлтүккө учуратуу жана колдонуучунун жана колдонуучунун колдонуучу кызматтарын коргоо үчүн коргоочу үлгү. Деградация (graceful degradation) - ресурстардын жетишсиздиги же мүчүлүштүктөр болгон учурда функционалдуулукту атайылап жөнөкөйлөтүү (мисалы, кэштелген/толук эмес маалыматтарды кайтаруу, "кымбат" көрүнүштөрдү өчүрүү).
Негизги максаты: SLO жана колдонуучунун тажрыйбасын башкарылуучу мүчүлүштүктөр менен сактоо, каскаддык түшүүлөрдүн ордуна.
1) Качан колдонуу керек
көз карандылык туруксуз: өсүш p95/p99, убакыт, туура эмес жооптор.
катуу чектери/жаза менен тышкы API.
"Оор" backends (издөө, сунуштар, отчеттор), кайда retrais бороон күчөтүү.
Бассейндердин (кошулмалардын, тректердин) түгөнүү коркунучу бар жогорку жүктөлгөн участоктор.
2) CB абалы жана өтүү
Классикалык үчилтик:1. Closed - трафик келе жатат, ката/жашыруун метриктер эсептелет.
2. Open - чалуулар дароо четке кагылат (fail-fast) жана/же fallback которулат.
3. Half-Open - чектелген сандагы "сыноо" суроолор өчүргүч жабуу же жокпу, аныктайт.
Ачылыш триггерлери
Терезеден ката/тайм босогосу (мисалы, акыркы ≥ 50%).
Латенттүүлүк босогосу (мисалы, p95> максаттуу).
Айкалыштырылган саясат (ката ∧ тайм ашып).
Сактоо убактысы (cool-down)
Туруктуу (мисалы, 10-60 сек) же адаптивдүү (кайталанганда экспоненциалдык чоңойтуу).
3) Таймауттар, ретрайлер жана джиттер
Таймауттар ар дайым SLO агымынан кыска жана чынжыр боюнча макулдашылган (deadline propagation).
Ретраи гана idempotent бүтүмдөр үчүн; 1-2 аракет көпчүлүк учурларда жетиштүү.
Backoff + Jitter (full jitter) синхрондуу кайталоо толкундарын алдын алуу.
Hedging (запастык суроолор) - үнөмдүү жана өтө маанилүү окуу үчүн гана.
4) Bulkhead-изоляция жана "сактагычтар"
домендери жана трафик түрлөрү (VIP, арткы милдеттери, коомдук API) боюнча байланыш/Worker/кезек пулдарын бөлүү.
"кымбат" иш үчүн concurrency боюнча Caps.
Admission control: кезек толуп жатканда аткарууга чейин жеңил баш тартуу.
5) Fallback жана деградация жагдайлар
Варианттар
Кэш/стейл жооптор: 'stale-while-revalidate', L2/L3 кэшинен маалыматтарды кайтаруу.
Read-only: блок жазуу/буйрук, коопсуз окууга уруксат берүү.
Суррогат жооптор: толук эмес маалыматтар (мисалы, сунуштарсыз/аватарсыз).
Функционалдык өчүрүү: критикалык эмес виджеттерди/чиптерди убактылуу жашыруу.
Feature flags: чыгаруу жок жүрүм-тез өзгөртүү.
Эрежелер
Fallback маалыматтарды аныктоо, тез жана коопсуз болушу керек.
Так Логин/Trace/Metrics деградацияланган жол белгилөө.
6) Артыкчылыктуу жана трафик-шейпинг
VIP/акы төлөнүүчү пландар - чоң артыкчылык/квота тартыштыгы.
Rate limits жана throttling начарлап көз карандылыктын жүгүн азайтат.
Shed load: жумшак сапаттын төмөндөшү (мисалы, азыраак натыйжалар, кыскартылган сүрөттөр) турукташтырууга чейин.
7) байкоо жана сигнал
Метрика CB
абалы (closed/open/half-open) жана абалы узактыгы.
Себептерден улам мүчүлүштүктөрдүн үлүшү: CB-open, timeout, 5xx, retry-exhausted.
p95/p99 жашыруун "чейин" жана "кийин" өчүргүч.
fallback аркылуу суроо саны/үлүшү.
Трейсинг
Span аннотациялары: 'circuit = opened', 'fallback = cache', 'admission = denied'.
Чектер менен корреляция (429/RateLimit-), кезектер жана кошулмалардын октору.
Логи/аудит
Ачуу/жабуунун себеби, босоголор, көз карандылыктын идентификаторлору.
8) Келишимдер жана протокол
HTTP
Fail-fast: '503 Service Unavailable' менен 'Retry-After' (же '429' лимиттерде).
Partial content/Stail: '200 '/' 206' деградация метаданалары менен (мисалы, 'X-Degraded: true').
Кэш-саясат: 'Cache-Control: stale-if-error, stale-while-revalidate'.
gRPC
'UNAVAILABLE', 'DEADLINE _ EXCEEDED', кардар/прокси саясаты боюнча ретрациялардын семантикасы.
суроо контекстинде Deadline/timeout; чылбыр боюнча мөөнөт.
Идемпотенттүүлүк
POST-операциялар үчүн "Idempotency-Key", чек арадагы дедупликация.
9) Типтүү ишке ашыруу (псевдокод)
pseudo onRequest(req):
if circuit. isOpen(dep):
return fallbackOrFail(req)
with timeout(T):
try:
resp = call(dep, req)
circuit. recordSuccess(dep, latency=resp. latency)
return resp except TimeoutError or 5xx as e:
circuit. recordFailure(dep)
if circuit. shouldOpen(dep):
circuit. open(dep, coolDown=adaptive())
return fallbackOrFail(req)
Half-Open сыноо
pseudo onTimer():
if circuit. state(dep) == OPEN and coolDownExpired():
circuit. toHalfOpen(dep)
onRequestHalfOpen(req):
if circuit. allowTrial (dep): # e.g. 1 try: call -> success => close catch: reopen with longer coolDown else:
return fallbackOrFail(req)
10) Босоголорду орнотуу
Байкоо терезеси: N секунд/суроо-талап жылып.
Каталардын босогосу: терезеде 20-50% (профилине жараша).
Жашыруун босого: p95 ≤ максаттуу SLO (мисалы, 300-500 ms); ашыкча CB үчүн "ката" катары эске алынат.
Adaptive cool-down: 10s → 30s → 60s кайталап иштеп жатканда.
11) тестирлөө жана башаламандык-практикасы
Chaos: Enjeksiyon жашыруун/ката көз каранды, DNS бузулушу, тамчылатып баштыктар.
Game days: согуштук чөйрөдө "ачуу" өчүргүчтү ишке киргизүү, fallback текшерүү.
Canary: 1-5% трафик үчүн биринчи жолу SV/деградация саясатын киргизиңиз.
SLO-бюджет: error-budget түгөнүп чейин эксперименттерге жол.
12) Көп тенанттуулук менен интеграция
CB абалы per-dependency per-tenant (ызы-чуу ижарачылар үчүн) же глобалдуу сакталышы мүмкүн - жүктүн профилине жараша.
Fallback маалыматтар жана кэш-сегменттөө 'tenant _ id'.
Артыкчылыктар/квоталар - пландарга ылайык (VIP Starter жүрүм-турумунан жапа чекпеши керек).
13) Азык-түлүктүн алдындагы чек-тизме
- Убакыт жана мөөнөт аркылуу жана макулдашылган.
- Retrains чектелген, гана Emempotent иш үчүн, backoff + Jitter менен.
- CB босогосу жүктөө сыноо маалыматтар менен негизделет.
- Fallback жолдору бар, тез жана коопсуз; кэш саясаты аныкталган.
- Bulkhead-изоляция: өзүнчө бассейндер/кезектер/лимиттер.
- Metrics/Trades/Логи CB деградация жана абалын белгилөө.
- Жооп келишимдеринин документтери (HTTP/gRPC) аталыштары/коддору менен.
- Башаламандык-жагдайлар жана оюн-күн үзгүлтүксүз өтөт; runbook бар.
14) типтүү каталар
Эч кандай тайм-аут → retry "токтото туруу" жана каскаддык түшүүлөр.
Бирдиктүү Global CB ордуна шайлоо (EndPoint/ыкма боюнча) - кошумча баш тартуу.
Ачык fallback жок өчүргүч → деградацияланган UX ордуна "бош" экрандар.
Життерсиз ретрайлер → синхрондуу бороон-чапкындар.
Узак cool-down кыска мөөнөттүү же өтө кыска туруктуу учурда - "flip-flop" шарттары.
Жок bulkhead - жалпы көлмөлөрдү чарчоо жана "head-of-line blocking".
15) Стратегияны тез тандоо
Жогорку маанидеги окуулар: CB + кэш стейл жооптор + hedging (үнөмдүү).
Жазуулар/төлөмдөр: катуу таймауттар, минималдуу retrains, idempotency keys, жок "кир" fallback.
Тышкы API: агрессивдүү босоголор менен CB, adaptive cool-down, катуу throttling.
Микросервис толкунданып жүк: bulkheads, concurrency боюнча caps, VIP артыкчылыктуу.
Корутунду
Circuit Breaker жана башкарылуучу деградация архитектуранын "камсыздандыруусу" болуп саналат: алар башаламан баш тартууларды болжолдонгон жүрүм-турумга которушат. Так таймауттар, чектелген ретрайлер, изоляцияланган бассейндер, ойлонулган fallback жолдору жана телеметрия системаны көз карандылыктын бузулушуна туруктуу кылат жана эң жогорку жана авариялык мезгилде да SLOну кармап турат.