Gecikme Teknolojileri ve Altyapı ve API Yanıt Optimizasyonu
Gecikme ve API Yanıt Optimizasyonu
1) "Gecikme'nedir ve neden önemlidir?
Gecikme - toplam istek gecikmesi: ağ (DNS + TCP + TLS + RTT), dengeleyici/ağ geçidi, uygulama, DB/önbellek/kuyruklar, harici entegrasyonlar. P95/P99 ortalama değil, iş için kritik öneme sahiptir: UX, CR ve SLO'yu yok eden "kuyruk".
Temel SLI'lar:- 'SLI _ latency _ P95 = P95 (response _ time)' 5/30 dakika içinde
- 'SLI _ latency _ P99 = P99 (response _ time)'
- 'SLI _ queue _ time = P95 (worker _ queue _ time)'
- 'SLI _ ext _ call _ P95 = P95 (external _ provider _ latency)'
2) Gecikmeli kaynak haritası (ve kazılacak yer)
1. Ağ ve protokoller: DNS, TCP el sıkışmaları, TLS, head-of-line (HTTP/1. 1), paket kaybı, BBR/ECN.
2. Ağ geçidi/dengeleyici: yavaş sağlık kontrolü, geçersiz zaman aşımları, sıcak dipler.
3. Uygulama: kilitler, GC/stop-the-world, senkron I/O, çekişme.
4. Depolar: yavaş veritabanı sorguları, dizin yok, soğuk sayfalar.
5. Harici hizmetler: PSP/KYC, üçüncü taraf API'ler (dar SLA'lar).
6. Kuyruklar ve arka plan sıkışmaları: aşırı yüklü işçiler, geri dönüş yok.
7. Önbellek/kenar: önbellek özlüyor, zayıf TTL, geçersiz sakatlık.
3) Ağ ve protokoller
3. 1 DNS/TCP/TLS
Önde DNS prefetch/preconnect, PSP'ye uzun ömürlü IP.
İstemcilerde Keep-Alive/bağlantı havuzu; Sunucuda - toplu bağlantılar.
TLS: devam/Oturum Biletleri, modern bir şifre paketi; Güvenli olmayan idempotent işlemler için 0-RTT kaçının.
TCP: sohbetler/küçük paketler için Nagle'yi ('TCP _ NODELAY') devre dışı bırak; 'Başlangıç penceresini' ayarlayın, uygun olduğunda BBR'yi etkinleştirin.
3. 2 HTTP/2 и HTTP/3
HTTP/2: çoğullama HTTP/1 HOL kilitlerini azaltır. 1; thread önceliklerini izleyin.
HTTP/3/QUIC: kayıpların daha düşük etkisi/RTT; Mobil/uluslararası bir ağda faydalıdır.
Başlık sıkıştırma: HPACK/QPACK, ancak makul bir başlık boyutu tutun.
3. 3 Dengeleme/yönlendirme
Locality-aware (zoning), EWMA/least-request - versus hot instances.
Yapışan oturumlar - sadece bir devlet varsa; Aksi takdirde durumsuz + paylaşılan önbellek/oturumlar.
4) Formatlar, yük, sıkıştırma
Sıkmak: Brotli (metin), geri dönüş olarak Gzip; İkili biçimler: gRPC/dahili API'ler için Protobuf/Avro.
Yükü azaltma: seçmeli alanlar ('alanlar =...'), sayfalama, koşullu GET (ETag/If-None-Match), delta yanıtları.
GraphQL: kalıcı sorgular, "yağ" parçalarının yasaklanması, derinlik ve karmaşıklık sınırları.
N + 1'den kaçının: Joyns/edat, agregalar için butch uç noktaları.
5) Zaman aşımları, geri çekilmeler, idempotans
Zincir zaman aşımı istemcisi <gateway <appa <storage/external call.
Backoff + jitter ile Retrai, sadece geçici hatalar için; Retrayes üzerinde bütçeleri açığa.
Idempotence: sorgu anahtarı/token + kaydet sonucu; Geri çekilmeler operasyonları çoğaltmamalıdır (özellikle finans).
Devre Kesici: Bozulduğunda açık; Yazı için hedged/yedekleme istekleri (P95 ile yinelenen gönderin).
6) Kuyruklar, asynchrony ve backpressure
Eşzamanlı yolu engellemeyin: arka planda ağır işlemler (KYC taramaları, raporlama).
Geri basınç: kuyruktan tüketimi sınırlayın, eşzamanlılığı düzeltin.
Gruplama/birleştirme - Küçük işlemleri birleştirin (örneğin, bakiyeleri toplama ile güncellemek).
Giden Kutusu/Gelen Kutusu: Arıza durumunda olayların garantili teslimatı.
7) Uygulama: çalışma süreleri ve havuzlar
Veritabanlarına/önbelleklere/HTTP'ye bağlantı havuzları; Arka ucu "boğmamak" için onları sınırlayın.
JVM: Profil GC (G1/ZGC), büyük tahsislerden kaçının; .NET - ThreadPool/async; Düğüm noktası. Js - olay döngüsünü engellemeyin, CPU-ağır çıkarın.
Python: asenkron sürücüler (asyncpg/httpx), uvloop; İşçi havuzu üzerinden CPU görevleri.
Isınma: JIT/önbellekleri, zirvelere "sıcak havuzlar" örneklerini ısıtın.
8) Veritabanları ve önbellekler
İndeksler ve planlar: düzenli 'AÇIKLAMA', otomatik vakum/analiz, tarama limiti.
Bağlantı havuzu (PgBouncer/Multiplexing), kısa işlemler.
Önbellek stratejileri: okuma, yazma/yazma; Etkinliğe göre TTL + engellilik.
Sharding/replikalar: kölelerden okuma, "sıcak anahtarlar" - yerel önbellekler (önbelleğe yakın).
9) Önbelleğe alma ve kenar
Statik/dizinler için CDN/edge, 'Cache-Control', 'ETag' için önbellek API yanıtları (güvenliyse).
UX kararlılığı için bayat-while-revalidate ve bayat-if-error.
Coğrafi tahsis: En yakın RRR/bölge RTT'yi azaltır.
10) Mimari desenler ve P99 kuyrukları
Hedged requests - Yavaş bir isteği eşikten sonra başka bir örneğe çoğaltın.
Çökme isteği: veritabanına bir "önde gelen" istek, geri kalanı sonucu bekliyor (fırtınaları önler).
Öncelik: VIP/kritik işlemler - özel havuz/öncelik.
Zarif bozunma: Aşırı yüklendiğinde küçük alanları/widget'ları kesin.
11) Yapılandırmalar (yaklaşık olarak)
11. 1 NGINX (Zaman Aşımı/Sıkıştırma)
nginx proxy_connect_timeout 1s;
proxy_send_timeout 2s;
proxy_read_timeout 2s;
send_timeout 2s;
gzip on;
gzip_types application/json text/plain text/css application/javascript;
11. 2 Elçi (hedge + yeniden deneme bütçesi)
yaml
RetryPolicy:
retry_on: 5xx,reset,connect-failure num_retries: 2 per_try_timeout: 300ms retry_back_off: { base_interval: 50ms, max_interval: 200ms }
retry_priority:
name: envoy. retry_priorities. previous_priorities
HedgePolicy:
hedge_on_per_try_timeout: true initial_requests: 1 additional_request_chance: 0. 2
11. 3 gRPC (istemci)
json
{
"methodConfig": [{
"name": [{"service": "payments. Service"}],
"timeout": "0. 8s",
"retryPolicy": {
"maxAttempts": 3,
"initialBackoff": "0. 05s",
"maxBackoff": "0. 2s",
"backoffMultiplier": 2. 0,
"retryableStatusCodes": ["UNAVAILABLE","DEADLINE_EXCEEDED"]
}
}]
}
12) Gözlemlenebilirlik: Doğru ölçme
KIRMIZI/KULLANIM metrikleri + OTel trails: 'trace _ id' gateway-service-database-external API'ler aracılığıyla.
Tek tek etiketler: 'api _ version', 'region', 'partner', 'endpoint'.
Panolar: P50/P95/P99, kuyruk süresi, hata karışımı, yeniden deneme oranı, önbellek isabeti.
Hedef ülkelerden/ASN'den (TR/BR/EU) ve kritik yollardan (reg - depozit, ödeme) sentetikler.
- Çekirdek API: 'P95 ≤ 250ms', 'P99 ≤ 500ms' (30 gün)
- PSP webhook işleme: Retras ile 'P99 ≤ 60'lar'
- Tazelik kataloğu: 'P95 lag ≤ 30 s'
13) FinOps и gecikme süresi
Milisaniyeler paraya değer: CR/ARPPU'daki $/ms kazançlarını tahmin edin.
Sağ boyutlandırma: her zaman daha hızlı ≠ daha pahalı; Yetkili önbellek/formatlar daha ucuz ve daha hızlıdır.
Çıkış/kenar: CDN, bölgeden giden trafiğin RTT ve maliyetini azaltır.
14) Optimizasyon kontrol listesi (adım adım)
1. SLO'yu ayarlayın ve uç noktalara/bölgelere/ortaklara göre kuyrukları (P95/P99) ölçün.
2. HTTP/2/3, TLS'nin yeniden başlatılması, uzun ömürlü bağlantılar.
3. Sıkmak ve kilo cevapları: Brotli/Gzip, talep üzerine alanlar, sayfalama, ETag.
4. Zaman aşımları/geri çekilmeler/kırıcılar ayarlayın; idempotency ekleyin.
5. Önbellek/kenar: isabet oranı ve doğru TTL; bayat modlar.
6. DB: indeksler, planlar, havuzlar, kopyalar; N + 1'i eleyin.
7. Ağır asenkronize: kuyruklar, butching, backpressure.
8. Kritik yollar için hedge/collapse/priority.
9. Toplama ısınma ve tahmini ölçekleme (turnuvalar/maçlar).
10. P99 ve kuyruk süresi ile ilgili sentetikler ve uyarılar; Düzenli perf değerlendirmeleri.
15) Anti-desenler
"Herkes için'bir global zaman aşımı ve kontrolsüz geri çekilmeler (DDOS'un kendisi).
Sıcak düğümlere gerek kalmadan yapışan oturumlar.
Sıkıştırma ve alan filtreleri olmadan büyük JSON'lar.
"Sıcak yol'daki harici API'leri yavaşlatmak için eşzamanlı çağrılar.
Veritabanında indekslerin/sınırların olmaması; ORM'de N + 1.
Önbellek/kenar ve ETag yok; kalıcı tam yanıtlar.
Bir "geri çekilebilir" sepete iş ve teknik hataların bir karışımı.
16) iGaming bağlamı/fintech: pratik notlar
Reg> depozit (CR): rota önceliği, bireysel havuz, 'P99 ≤ 500ms'; Bozulma - UI "süslemeleri" devre dışı bırakın.
PSP entegrasyonları: concarrency limitleri, zaman kodları ile retrays, sıcak bağlantılar, bölgesel çıkış-IP.
VIP işlemleri: garantili havuz/öncelik, halka açık kuyrukları atlayarak.
Turnuvalar/etkinlikler: tahmini ölçek, önbellek ısınması, ön ayar.
Raporlama: Tazelikte async ve SLA, üretim yolunu engellemez.
Toplam
Gecikme optimizasyonu bir denge disiplinidir: ağ (HTTP/2/3, TLS), protokoller ve önbellek, idempotency, DB/önbellekler, asenkron desenler ve P95/P99 gözlemlenebilirliği ile zaman aşımı/retrays. Kuyruklara odaklanarak ve'dar boyunları "ortadan kaldırarak, yanıtı stabilize eder, dönüşümü iyileştirir ve işi gerçekten etkilediği milisaniye başına maliyeti düşürürsünüz.