GH GambleHub

Circuit Breaker және деградация

Circuit Breaker (CB) - бұл апстрим-сервистерді және пайдаланушыны оқшаулау және қорғау үшін нашарлаған тәуелділікке шақыруларды тоқтататын қорғау паттерны. Деградация (graceful degradation) - ресурстар жетіспеген немесе істен шыққан кезде функционалдылықты саналы түрде жеңілдету (мысалы, кэштелген/толық емес деректерді қайтару, «қымбат» фичтерді ажырату).

Басты мақсат: SLO және пайдаланушы тәжірибесін каскадты құлау орнына бақыланатын істен шығулар есебінен сақтау.

1) Қашан қолдану

Тәуелділік тұрақсыз: өсу p95/p99, таймауттар, қате жауаптар.
Қатаң лимиттері/пенальтилері бар сыртқы API.
Ретрайлер дауылды күшейтетін «ауыр» бэкендтер (іздеу, ұсыныстар, есептер).
Пулдардың (қосылыстардың, тректердің) таусылу қаупі бар жоғары жүктелген учаскелер.

2) CB жай-күйі және ауысулар

Классикалық үштік:

1. Closed - трафик жүріп жатыр, қате/жасырындылық өлшемдері есептеледі.

2. Open - шақырулар жылдам ауытқиды (fail-fast) және/немесе fallback-ке аударылады.

3. Half-Open - «сынақ» сұрауларының шектеулі саны ажыратқышты жабу-жабу мүмкіндігін анықтайды.

Ашу триггерлері

Терезеден тыс қателер/таймауттар шегі (мысалы, соңғы N 50% ≥).
Жасырындылық шегі (мысалы, p95> нысаналы мән).
Аралас саясаттар (қателер ∧ таймауттың артуы).

Ұстап қалу уақыты (cool-down)

Тіркелген (мысалы, 10-60 сек) немесе бейімделген (қайта іске қосылғанда экспоненциалды ұлғаю).

3) Таймауттар, ретраилер және джиттер

Таймауттар әрқашан SLO апстримінен қысқа және тізбегі бойынша келісілген (deadline propagation).
Ретраялар тек идемпотенттік операцияларға арналған; Көп жағдайда 1-2 талпыныс жеткілікті.
Backoff + джиттер (full jitter) қайталаудың синхронды толқындарын болдырмайды.
Hedging (қосалқы сұраулар) - үнемді және тек өте сыни оқулар үшін.

4) Bulkhead-оқшаулау және «сақтандырғыштар»

Қосылымдар/воркерлер/кезектер пулдарын домендер және трафик түрлері (VIP, фондық тапсырмалар, көпшілік API) бойынша бөліңіз.
«Қымбат» операциялар үшін Caps concurrency.
Admission control: кезек толған кезде орындалғанға дейін жеңіл істен шығу.

5) Fallback және деградация сценарийлері

Параметрлер

Кэш/Стейл жауаптар: 'stale-while-revalidate', кэш L2/L3 деректерді қайтару.
Read-only :/команда жазу блогы, қауіпсіз оқуға рұқсат беру.
Суррогаттық жауаптар: толық емес деректер (мысалы, ұсыныстарсыз/аватарсыз).
Функционалды өшіру: сыни емес виджеттерді/фичтерді уақытша жасыру.
Feature flags: шығарылмай жүріс-тұрысты жылдам өзгерту.

Ереже

Fallback деректер бойынша детерминирленген, жылдам және қауіпсіз болуы тиіс.
Деградацияланған жолды логтарда/трестерде/метриктерде анық белгілеңіз.

6) Басымдылық және трафик-шейпинг

VIP/ақылы жоспарлар - тапшылық кезінде үлкен басымдық/квота.
Rate limits және throttling тозған тәуелділікке жүктемені азайтады.
Shed load: тұрақтандыруға дейін сапаның жұмсақ төмендеуі (мысалы, аз нәтижелер, қысқартылған бейнелер).

7) Бақылау және сигналинг

CB өлшемдері

Күйі (closed/open/half-open) және күйінің ұзақтығы.
Себептері бойынша істен шығу үлесі: CB-open, timeout, 5xx, retry-exhausted.
p95/p99 ажыратқыштың «дейін» және «кейін» жасырындылығы.
Fallback арқылы сұраулардың саны/үлесі.

Трейсинг

Спан аңдатпалары: 'circuit = opened', 'fallback = cache', 'admission = denied'.
Лимиттермен (429/RateLimit-), кезектермен және қосылыс оқтарымен корреляция.

Логи/аудит

Ашу/жабу себебі, табалдырықтар, тәуелділік сәйкестендіргіштері.

8) Келісімшарттар мен хаттама

HTTP

Fail-fast: '503 Service Unavailable' c 'Retry-After' (немесе лимиттер кезінде '429').
Partial content/стейл: '200 '/' 206' дегеннің метадеректері бар (мысалы, 'X-Degraded: true').
Кэш саясаты: 'Cache-Control: stale-if-error, stale-while-revalidate'.

gRPC

'UNAVAILABLE', 'DEADLINE _ EXCEEDED', клиент/прокси полистері бойынша ретрайлардың семантикасы.
Сұрау контекстіндегі Deadline/timeout; мерзім тізбегі бойынша төмен таралады.

'Idempotency-Key' POST-операциялары үшін, шекарадағы дедупликация.

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% (бейініне байланысты).
Латенттілік шегі: мақсатты SLO ≤ p95 (мысалы, 300-500 мс); асып кетуі CB үшін «қате» ретінде ескеріледі.
Адаптивті cool-down: 10s → 30s → 60s қайта іске қосылғанда.

11) Тестілеу және хаос-практика

Chaos: жасырындылық/қателіктерге байланысты инъекция, DNS сынуы, drop пакеттері.
Game days: жауынгерлік тәрізді ортада ажыратқышты «ашу», fallback тексеру.
Canary: 1-5% трафик үшін алдымен СВ/деградация саясатын қосыңыз.
SLO-бюджет: error-budget аяқталғанша эксперимент жасауға рұқсат етіңіз.

12) Мульти-тенантпен интеграция

CB күйін per-dependency per-tenant (шулы жалға алушылар үшін) немесе жүктеме профиліне байланысты жаһандық сақтауға болады.
Fallback деректері мен кэштерін 'tenant _ id' бойынша саралаңыз.
Басымдықтар/квоталар - жоспарларға сәйкес (VIP Starter мінез-құлқынан зардап шекпеуі тиіс).

13) Азық-түлік алдындағы чек-парағы

  • Таймауттар мен мерзімдер толассыз және келісілген.
  • Ретраялар шектелген, тек демпотенттік операциялар үшін, backoff + джиттермен.
  • CB шекті мәндері жүктеме тестінің деректерімен негізделген.
  • Fallback жолдары бар, жылдам және қауіпсіз; кэш саясаты анықталған.
  • Bulkhead-оқшаулау: бөлек пулдар/кезектер/лимиттер.
  • Метриктер/трестер/логтар CB тозуы мен жай-күйін белгілейді.
  • Жауаптар келісімшарттарының құжаттамасы (HTTP/gRPC) тақырыптар/кодтар мысалдары.
  • Хаос-сценарийлер мен game-days тұрақты түрде өткізіледі; runbook бар.

14) Типтік қателер

Таймауттар жоқ → «тірекке дейін» ретрайлері және каскадты құлдыраулар.
Сайлаудың орнына бірыңғай жаһандық СВ (эндпойнт/әдіс бойынша) - артық бас тартулар.
fallback жоқ ашық ажыратқыш → деградацияланған UX орнына «бос» экрандар.
Джиттерсіз ретрайлер → синхронды сұраулар дауылы.
Ұзақ cool-down қысқа мерзімді ақауларда немесе тым қысқа тұрақты күйде - «флип-флоп» күйде.
Bulkhead жоқтығы - жалпы пулдардың және «head-of-line blocking» сарқылуы.

15) Стратегияны жылдам таңдау

Жоғары маңызды оқу: CB + кэш стейл-жауап + hedging (үнемді).
Жазбалар/төлемдер: қатаң таймауттар, минималды ретрайлер, idempotency keys, «лас» fallback болмауы.
Сыртқы API: CB агрессивті табалдырықтармен, бейімделген cool-down, қатаң throttling.
Пульсациялық жүктемесі бар микросервистер: bulkheads, caps concurrency, VIP басымдылығы.

Қорытынды

Circuit Breaker және басқарылатын деградация - бұл архитектураның «сақтандыруы»: олар хаотикалық бас тартуларды болжамды мінез-құлыққа айналдырады. Нақты таймауттар, джиттермен шектелген ретрациялар, оқшауланған пулдар, ойластырылған fallback жолдары және телеметрия жүйені тәуелділіктің бұзылуына төзімді етеді және SLO-ны тіпті ең жоғары және апатты кезеңдерде де ұстап тұрады.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.