GH GambleHub

Devre Kesici ve Bozulması

Devre Kesici (CB), arızayı yerelleştirmek ve yukarı akış hizmetlerini ve kullanıcıyı korumak için çağrıları bozulmuş bir bağımlılığa kesen bir güvenlik modelidir. Bozulma (zarif bozulma) - kaynak eksikliği veya arızalar durumunda (örneğin, önbelleğe alınmış/eksik verilerin döndürülmesi, "pahalı" özelliklerin devre dışı bırakılması) tam kesinti olmadan işlevselliğin kasıtlı olarak basitleştirilmesi.

Ana amaç: SLO ve kullanıcı deneyimini basamaklı damlalar yerine kontrollü arızalarla korumak.

1) Ne zaman başvurulur

Bağımlılık kararsızdır: p95/p99 büyüme, zaman aşımları, hatalı cevaplar.
Katı sınırlara/cezalara sahip harici API'ler.
Retray'lerin fırtınayı yoğunlaştırdığı'ağır "arka uçlar (arama, öneriler, raporlar).
Havuzların tükenme riski olan yüksek yüklü alanlar (bağlantılar, iplikler).

2) CB durumları ve geçişleri

Klasik üçlü:

1. Kapalı - trafik gider, hata/gecikme metrikleri sayılır.

2. Açık - çağrılar anında reddedilir (fail-fast) ve/veya fallback'e aktarılır.

3. Yarı Açık - Sınırlı sayıda "deneme" isteği, anahtarın kapatılıp kapatılmayacağını belirler.

Açma tetikleyicileri

Pencere başına hata/zaman aşımı eşiği (örneğin, son N değerinin ≥ %50'si).
Gecikme eşiği (örn. p95> hedef).
Birleştirilmiş ilkeler (hatalar ∧ zaman aşımı aşıldı).

Bekleme süresi (soğuma)

Sabit (örneğin, 10-60 saniye) veya uyarlanabilir (tekrarlanan etkinleştirmelerle üstel artış).

3) Zaman aşımları, geri çekilmeler ve titreme

Zaman aşımları her zaman yukarı akış SLO'larından daha kısadır ve son tarih yayılımıdır.
Retrai sadece idempotent işlemler için; Çoğu durumda 1-2 deneme yeterlidir.
Backoff + jitter (tam jitter) eşzamanlı tekrarlama dalgalarını önler.
Hedging (yedek istekler) - ekonomik ve sadece çok kritik okumalar için.

4) Bulkhead-izolasyon ve "sigortalar"

Etki alanına ve trafik türüne göre ayrı bağlantı/işçi/kuyruk havuzları (VIP, arka plan görevleri, genel API'ler).
"Pahalı" işlemler için eşzamanlılık üzerindeki kapaklar.
Kabul kontrolü: kuyruk dolduğunda yürütülmeden önce kolay arıza.

5) Geri dönüş ve bozulma senaryoları

Seçenekler

Önbellek/stil yanıtları: 'stale-while-revalidate', L2/L3 önbellekten veri döndürme.
Salt okunur: yazma/komut bloğu, güvenli okumaya izin ver.
Vekil yanıtlar: eksik veriler (örneğin, öneri/avatar yok).
İşlevsel devre dışı bırakma: kritik olmayan widget'ları/özellikleri geçici olarak gizler.
Özellik bayrakları: serbest bırakılmadan hızlı davranış değişikliği.

Kurallar

Fallback deterministik, hızlı ve verilerden güvenli olmalıdır.
Günlüklerde/izlerde/metriklerde bozulmuş yolu açıkça işaretleyin.

6) Önceliklendirme ve trafik şekillendirme

VIP/ücretli planlar - eksiklik durumunda daha yüksek öncelik/kotalar.
Hız sınırları ve azaltma, bozulmuş bağımlılıklar üzerindeki yükü azaltır.
Dökme yükü: Kalitede yumuşak azalma (örn. stabilize olana kadar daha az sonuç, kesilmiş görüntüler).

7) Gözlemlenebilirlik ve sinyalizasyon

CB metrikleri

Durum (kapalı/açık/yarı açık) ve durumdaki süre.
Başarısızlıkların nedenlere göre payı: CB-açık, zaman aşımı, 5xx, yeniden-tükenmiş.
Anahtardan'önce've "sonra" p95/p99 gecikme.
Geri dönüş yoluyla taleplerin sayısı/yüzdesi.

İzleme

Açıklıkların açıklamaları: 'devre = açıldı', 'geri dönüş = önbellek','kabul = reddedildi '.
Sınırlar (429/RateLimit-), kuyruklar ve bağlantı madde işaretleri ile korelasyon.

Günlükler/Denetimler

Açılış/kapanış nedeni, eşikler, bağımlılık kimlikleri.

8) Sözleşmeler ve Protokol

HTTP

Hızlı başarısız olma: '503 Servis Kullanılamıyor', 'Yeniden Deneme-Sonra' (veya sınırlarda '429').
Kısmi içerik/bayat: '200'/' 206', degradasyon meta verileriyle (örneğin, 'X-Degraded: true').
Önbellek ilkeleri: 'Cache-Control: stale-if-error, stale-while-revalidate'.

gRPC

'UNAVAILABLE', 'DEADLINE _ EXCEEDED', müşteri/proxy politikalarına göre semantiği yeniden ayır.
Talep bağlamında son tarih/zaman aşımı; Süreyi zincirin altına yaymak.

Idempotency

POST işlemleri için 'Idempotency-Key', sınırda veri tekilleştirme.

9) Tipik uygulama (sözde kod)

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)

Yarı Açık örnek

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) Eşikleri ayarlama

Gözlem penceresi: N saniye/sorgular kayar.
Hata eşiği: Pencerede %20-50 (profile bağlı olarak).
Gecikme eşiği: p95 ≤ hedef SLO (örneğin, 300-500 ms); fazlalık CB için bir "hata'olarak sayılır.
Uyarlanabilir soğuma: Tekrarlanan harekete geçirmelerle birlikte 10'lar - 30'lar - 60'lar.

11) Test ve kaos uygulamaları

Kaos: gecikme/bağımlılık hatası enjeksiyonu, DNS dökümü, paket düşüşü.
Oyun günleri: Anahtarın "açılmasını" savaş benzeri bir ortamda başlatmak, geri dönüşü kontrol etmek.
Kanarya: Trafiğin %1-5'i için önce POC/bozulma politikalarını etkinleştirin.
SLO bütçesi: hata bütçesi tükenene kadar deneylere izin verin.

12) Çoklu kiracılık ile entegrasyon

CB durumu, kiracı başına bağımlılık başına (gürültülü kiracılar için) veya küresel olarak depolanabilir - yük profiline bağlı olarak.
Geri dönüş verilerini ve önbellekleri 'tenant _ id'ile bölümlere ayırın.
Öncelikler/kotalar - planlara göre (VIP'ler Starter davranışından muzdarip olmamalıdır).

13) Satış öncesi kontrol listesi

  • Zaman aşımları ve son tarihler uçtan uca ve tutarlıdır.
  • Retrays sınırlıdır, sadece idempotent işlemler için, backoff + jitter ile.
  • CB eşikleri yük testi verileri ile doğrulanır.
  • Fallback yolları var, hızlı ve güvenli; Politika önbelleği tanımlanmıştır.
  • Bulkhead izolasyonu: ayrı havuzlar/kuyruklar/sınırlar.
  • Metrikler/yollar/günlükler bayrak bozulması ve CB durumları.
  • Örnek başlıklar/kodlar ile yanıt sözleşmesi belgeleri (HTTP/gRPC).
  • Kaos senaryoları ve oyun günleri düzenli olarak gerçekleşir; Bir runbook var.

14) Tipik hatalar

Zaman aşımı yok - "sonuna kadar" geri çekiliyor ve basamaklı düşüyor.
Seçici yerine tek global CB (uç nokta/yöntemle) - gereksiz arızalar.
Fallback olmadan anahtarı açın - bozulmuş UX yerine "boş" ekranlar.
Jitter olmadan Retrai - taleplerin senkronize fırtınaları.
Kısa süreli arızalarla uzun soğuma veya stabil - "flip-flop" durumlarıyla çok kısa.
Bölme yokluğu - paylaşılan havuzların tükenmesi ve "hat başı engelleme".

15) Hızlı strateji seçimi

Yüksek öneme sahip okumalar: CB + eski yanıtların önbelleği + riskten korunma (ekonomik).
Kayıtlar/ödemeler: sıkı zaman aşımları, minimum yeniden ödemeler, idempotency anahtarları, kirli geri dönüş yok.
Harici API'ler: Agresif eşiklere sahip CB, uyarlanabilir soğuma, sıkı kısma.
Titreşimli yük mikro servisleri: bölmeler, eşzamanlılık başına büyük harfler, VIP önceliklendirme.

Sonuç

Devre Kesici ve yönetilen bozulma mimari "sigorta'dır: kaotik başarısızlıkları öngörülebilir davranışlara dönüştürürler. Açık zaman aşımları, sınırlı titreme geri çekilmeleri, izole havuzlar, düşünceli geri dönüş yolları ve telemetri, sistemi bağımlılık hatalarına karşı esnek hale getirir ve yoğun ve çarpışma dönemlerinde bile SLO'ları tutar.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.