GH GambleHub

Operasyonlar ve> Yönetim Hizmeti Bağımlılıkları

Hizmet bağımlılıkları

1) Neden ihtiyacınız var

Herhangi bir üretim platformu bir sayıdır: kullanıcılar - Edge/API - etki alanı hizmetleri - döner/akışlar - DB/önbellekler - harici sağlayıcılar (ödemeler, KYC, oyun sağlayıcıları). Grafiğin bir kenarında bir hata genellikle ağ boyunca "yürür": gecikmeler büyür, geri çekilmeler tetiklenir, kuyruklar tıkanır, basamaklı arızalar meydana gelir. Bağımlılık yönetimi "patlama yarıçapını" azaltır ve bültenleri öngörülebilir hale getirir.

Hedefler:
  • Çağrıların tam grafiğine bakın ve kimin kime bağlı olduğunu anlayın.
  • Kaskad arızalarını ve "yeniden ödeme fırtınasını" önleyin.
  • Uyumluluk ve SLO tanıtımına dayalı sürümleri planlayın.
  • MTTR'yi yükseltin: Gerçek kök nedenini daha hızlı bulun.

2) Bağımlılık türleri

Senkron (RPC: REST/gRPC/GraphQL): Gecikme/kullanılabilirlik ile sabit bağlantı. Zaman aşımına, kesintiye, bütçeyi yeniden ödemeye ihtiyacımız var.
Asenkron (Olay/Akış: Kafka/Tavşan/Pulsar): daha istikrarlı bağlantı, ancak gecikme/birikme ve teslimat semantiği (en az bir kez, idempotency) vardır.
Depolama (DB/Cache/Object store): paylaşılan kaynaklar - içerik, bağlantı sınırları/IOPS, tahliye, çoğaltma.
Harici sağlayıcılar (PSP/KYC/oyun sağlayıcıları): kotalar, ücretli aramalar, servis pencereleri, yasal SLA'lar.
İşletim (sürümler, phicheflags, configurs): Ayarlar, sırlar, şema kaydı yoluyla dolaylı bağımlılıklar.

3) Hizmet kataloğu ve bağımlılık grafikleri

Dizinde düzelttiklerimiz (Backstage/Service Catalog/CMDB):
  • Sahipler (Kadro/sohbet/Çağrı üzerine rota), repo, çevre, eserler.
  • API sözleşmeleri (OpenAPI/AsyncAPI), sürümler, uyumluluk (geri/ileri).
  • Tip (sync/async), kritiklik, SLO beklentileri ile gelen/giden bağımlılıklar (upstream/downstream).
  • Zaman aşımı/geri çekilme bütçesi, kırıcılar, bölme havuzları.
  • Dış entegrasyonların kotaları ve sınırları hakkında veri.
Mini örnek kart:
  • 'hizmet: ödemeler-api'
  • Upstream: 'User-profile' (sync), 'risk-score' (async).
  • Aşağı akış: 'PSP-X' (sync, квота 2k RPS), 'ledger' (async).
  • SLO: p99 ≤ 300ms, 99. %9 çalışma süresi.
  • Zaman aşımları: 200 ms 'PSP-X', 150 ms 'kullanıcı profili'.
  • Retrai: Üstel gecikmeli 2, titrek.
  • Kırıcı: 30'lar için %5 hata/10'larda açın.

4) SLO propagandası ve "gecikme bütçesi"

Senkronize çağrılar zinciri ile toplam SLO, gecikme ve başarısızlık olasılıklarının toplamından oluşur.

İlkeler:
  • İsteğin bütçesi yukarıdan aşağıya bölünmüştür: ön uç SLO 500 ms, Edge 50 ms, API 150 ms, domain hizmetleri 200 ms, sağlayıcı 100 ms.
  • Zaman aşımları "dışarı'daha kısadır: arayan toplam iç zaman aşımından daha az bir zaman aşımına sahiptir, böylece kaynaklar güncellenir ve zombi çağrıları birikmez.
  • Retrai sadece güvenli kodlar/istisnalar için ve jitter ile; Darboğaz zaman aşımları için geri çekilme yok (aka "fırtına").

5) Sözleşmeler ve birlikte çalışabilirlik

API sürüm oluşturma: Sözleşmeler için SemVer; "İsteğe bağlı" alanlar, şema uzantıları aracılığıyla geriye dönük uyumlu değişiklikler; silme - sadece "amortisman süresi" boyunca.
Tüketici odaklı sözleşmeler (CDC): CI'daki sağlayıcıya karşı yürütülen tüketici testleri (Pact benzeri); Uyumsuzsa serbest bırakma engellenir.
Kayıt şeması (Async): konuların/olayların sürümü, şemaların evrimi (Avro/JSON-Schema), eski-okuyabilir/yeni-yazabilir politikası.

6) Mühendislik stabilite modelleri

Zaman aşımları: iş SLA'larını teknik beklentilerden ayırmak; Her giden bağlantı açık bir zaman aşımıdır.
Retries + backoff + jitter: idempotence verildiğinde en fazla 2-3 deneme.
Devre Kesici: aşağı yönde bozulmada "hızlı düşüş"; Yarı açık deneme.
Bulkhead (havuz izolasyonu): Farklı downstreamler için - ayrı akarsu havuzları/zeminler/bağlantılar.
Rate-limit/Leaky-bucket: Zirvelerde aşağı akışları öldürmemek için.
Idempotency ve veri tekilleştirme: istek/mesaj düzeyi idempotency anahtarı; Büyükbaba-leiter ve geri çekilme kuyruğu.
Önbellekleme ve follbacks: yerel/dağıtılmış önbellekler, bayat-while-revalidate durumları, içerik bozulması.

Pseudo-config (fikir):

outbound:
psp-x:
timeout_ms: 200 retries: 2 retry_on: [5xx, connect_error]
backoff: exponential jitter: true circuit_breaker:
error_rate_threshold: 0. 05 window_s: 10 open_s: 30 pool: dedicated-psp (max_conns: 200)

7) Bağımlılıkların gözlemlenebilirliği

Dağıtılmış izler (TraceID, Bagaj): Bağlantılarla isteğin yolunu görün; 'akran etiketleri'ile giden aramalara yayılır. Servis ',' yeniden deneme ',' zaman aşımı '.
Bağımlılık başına Метрики: 'outbound _ latency _ p99', 'outbound _ error _ rate', 'open _ circuit', 'retry _ count', 'queue _ lag'.

Upstream/Downstream panoları:
  • SLO ve hatalı kenar renk kodlu hizmet haritası.
  • Geçen hafta için "Top N problem bağımlılıkları".
  • "Patlama yarıçapı" - X'in düşüşünden etkilenecek hizmetlerin bir listesi.
  • Korelasyon günlükleri: günlüklerde 'trace _ id'/' span _ id' içerir.

8) Bağımlılığa duyarlı sürüm yönetimi

Bağımlılığa duyarlı boru hatları: Tüketici CDC testleri kırmızıysa, sağlayıcının serbest bırakılması engellenir.
Kademeli içerme (phicheflags): yeni alanlar/endoints - tüketicilerin %1'i için - %10 - %100.
Kanarya bültenleri: temel bağımlılıkları ve trafik payındaki "gecikme bütçesini" kontrol ediyoruz.
Şemaların uyumluluğu: üretici 'vNew' yazıyor, tüketiciler 'vOld/vNew' okuyor; Geçişten sonra - eski alanların "çöp toplama".

9) Sütuna göre olaylar ve yükselmeler

"Gerçek suçlu'yu tanımlıyoruz: uyarı-korelasyon -" PSP-X "bozulduysa," ödeme çalısının "tamamını değil, entegrasyonun sahibini sayfalamıyoruz.
Otomatik bozma: phicheflag "minimum mod" (daha az ağır uç nokta, kesilmiş demetler, kritik olmayan özellikleri devre dışı bırakma).
Kaskadlardan koruyun: paralelliği sınırlayın, sıcak bir dalda retras'ı kapatın, kesiciyi önceden açın (önceden açık).

Runbook şablonu:
  • Teşhis: Hangi panolar/metrikler, kotaların/sınırların nasıl kontrol edileceği.
  • Eylemler: RPS'yi azaltın, bir yedekleme sağlayıcısına geçin, geçici olarak önbellek yanıtlarını etkinleştirin.
  • Geri alma ve doğrulama: parametreleri döndürün, normun p95/p99 ve hata oranı olduğundan emin olun.

10) Bağımlılık kritiklik matrisi

Eksenler boyunca her bağlantıyı değerlendirin:
ÇiftYazıKritiklik (GGR/SLA)Geçici çözümKotalar/LimitlerSahibi
'api - ödemeler'senkronizasyonYüksekKısmi çevrimdışı depozito2k RPSsquad-payments
'ödemeler - PSP-X'senkronizasyonKritikPSP-U/belirteç önbelleği1. 5k RPSEntegrasyonlar
'nets - risk-score'asyncOrtalamaöntanımlıya düşürrisk
Kurallar:
  • "Kritik" için - çift provizyon, kırıcılar, bireysel havuzlar, kaos testleri.
  • "Yüksek" için - en azından bozulma ve özelliği kapatmak için'yeşil düğme ".
  • "Orta/düşük" için - sınırları ve kuyruk bütçesini geri çekin.

11) Süreç: envanterden operasyona

1. Grafik eşleme: dizinden gerçek çağrıları (izleri) + bildirimsel bağımlılıkları toplayın.
2. Sahipleri atayın: her hizmet ve dış entegrasyon için - sorumlu on-call.
3. SLO'ları ve bütçeleri tanımlayın: gecikme/hatalar, zaman aşımları/geri ödemeler/havuzlar.
4. Sözleşmeleri resmileştirin: OpenAPI/AsyncAPI, şemalar ve CDC.
5. Stabilite modellerini etkinleştirin: zaman aşımları/yeniden denemeler/devre/bölme.
6. Panoları ve uyarıları bağımlılık başına yapılandırın.
7. Serbest kapıları yükleyin: CDC/uyumluluk/kanarya tarafından blok.
8. Düzenli oyun günleri: Düşen önemli kenarlarda kaos deneyleri.
9. İletişim odaklı post-mortemler: Basamakları güçlendiren şey, yarıçapın nasıl daraltılacağı.

12) Bağımlılık uyarıları (kural fikirleri)

Senkron downstreamler:
  • ' outbound _ error _ rate {to =" X"}> 10 m İÇİN %3' - uyarı; '> 5 m İÇİN %5' - kritik.
  • ' outbound _ p99 _ latency {to =" X"}> SLO1. 3 FOR 10m '- uyarı.
Devre kesici:
  • ' circuit _ open {to =" X "} = = 1 FOR 1m '> entegrasyon sahibine sayfa.
Retrai:
  • ' retry _ rate {to =" X "}> baseline2 FOR 5m '+ 'outbound _ rps> 0' - fırtına riski.
Async:
  • ' consumer _ lag {topic =" Y"} growth> threshold FOR 10m' + 'hpa at max'> крит.
Dış kotalar:
  • ' usage _ cota {provider =" PSP-X "}> %90 pencere '- uyarı, otomatik geçiş yolları.

13) Anti-desenler

"Tüm aşağı akışlar için ortak bir akarsu havuzu. "Toplam: satır başı engelleme. Havuzları bölün.
Zaman aşımı yok/sonsuz geri çekilmelerle. Böylece bir fırtına doğdu.
Idempotent olmayan ameliyatların kör retrays. Yinelenen yazmalar/bahisler.
Bağlantı noktası olarak gizli "paylaşılan DB". Güçlü rekabet ve blokajlar.
API sürümü CDC olmadan değişir ve planı kullanımdan kaldırır. Toplu düşmeleri yakala.
Gözlemlenebilirlik sadece servislerle, bağlantılarla değil. Zincirin kırıldığı yerde görünmez.

14) Gösterge Tabloları: minimum set

Hizmet Haritası: Kenar metrikleri (gecikme/hata/hacim) olan etkileşimli bir hizmet haritası.
Upstream/Downstream Genel Bakış: Hizmetin sahibi için - gelen bağımlılıklar (kim arıyor), giden (kim arıyor),'en önemli sorunlar ".
Dependency Drilldown: link spesifik kart: p50/p95/p99, sınıf hataları, açık kesici yüzdesi, retrays, bağlantı havuzu, kotalar/maliyet.
Release Context: Releases/phicheflags'ın bağımlılık grafiklerindeki ek açıklamaları.

15) Uygulama kontrol listesi

  • Sahipler ve sözleşmelerle hizmet dizini (OpenAPI/AsyncAPI).
  • İzlerden bağımlılıkların tam grafiği (günlük güncelleme).
  • Hizmete göre SLO ve zincirin aşağısındaki "gecikme bütçeleri".
  • Açık zaman aşımları, titreme geri çekilmeleri, kırıcılar, bölme izolasyonu.
  • CDC, CI'da bir serbest bırakma kapısı olarak test eder.
  • Bağımlılık ve hizmet kartı başına gösterge panoları.
  • Kenarlarda uyarılar + kök nedeni ile bastırma.
  • Oyun günleri: sağlayıcı/küme/konu bırakma ve bozulma kontrolü.
  • Bozunma planı: hangi özellikleri kapatıyoruz, hangi önbellekleri açıyoruz.
  • Bağlantıyı azaltmak için eylemlerle düzenli postmortemler.

16) Bağımlılık Yönetimi Kalite KPI'ları

Bağımlılık MTTR: Medyan kaburga kurtarma.
Blast Radius Index: Biri düştüğünde etkilenen hizmetlerin ortalama sayısı.
Birleştirme Puanı: Hepsi arasında senkronize bağımlılıkların oranı; düşüş eğilimi.
CDC Geçiş Oranı: Sözleşme ihlali olmayan bültenlerin yüzdesi.
Yeniden Deneme Fırtınaları/Ay Hedefi - 0.
Dış Aramaların Maliyeti: 1k RPS başına dış aramaların maliyeti (önbellekleme/follbacks etkisine bakın).

17) Hızlı başlangıç (varsayılanlar)

Zaman aşımları: Bağlantı bütçesinin %70-80'i; talep üst zaman aşımı <iç toplamı.
Retrai: Maksimum 2, sadece idempotent 5xx/ağda, backoff + jitter ile.
Kırıcı: 10 sn'de %5 hata eşiği, açık = 30 sn, yarı açık örnekler.
Bulkhead: aşağı akış başına özel havuzlar/bağlantı sınırları.
CDC: Tüm genel API'ler ve konular için zorunludur.
Async-preference: mümkünse - olaylara/kuyruklara geçiş (zaman içinde ayırma).

18) SSS

S: Hangisi daha önemli: Geri çekilme mi yoksa kırıcı mı?
A: Her ikisi de. Retrai kısa süreli arızalardan kurtarır, kırıcı kalıcı bozulma ve fırtınalardan korur.

S: Bağlantının'çok kırılgan "olduğunu nereden biliyorsunuz?
C: Yüksek hata korelasyonu, düşük zaman aşımı marjı, sık sık geri alma, follback/önbellek yok, senkron uzun zincirler.

S: Entegrasyon testlerimiz varsa neden CDC?
C: CDC tüketici beklentilerini yakalar ve uyumsuz olduğunda sağlayıcının serbest bırakılmasını bozar - kod üretime girmeden önce.

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.