GH GambleHub

Texnologiya və infrastruktur → Latency və API cavabının optimallaşdırılması

Latency və API cavabının optimallaşdırılması

1) «latency» nədir və niyə vacibdir

Latency - sorğunun ümumi gecikməsi: şəbəkə (DNS + TCP + TLS + RTT), balanslayıcı/şluz, proqram, DB/caches/növbələr, xarici inteqrasiya. Biznes üçün orta deyil, P95/P99 kritikdir: UX, CR və SLO-ları məhv edən «quyruqdur».

Əsas SLI:
  • 'SLI _ latency _ P95 = P95 (cavab vaxtı)' 5/30 dəqiqə ərzində
  • 'SLI _ latency _ P99 = P99 (cavab vaxtı)'
  • 'SLI _ queue _ time = P95 (saat _ in _ növbə _ worker)'
  • 'SLI _ ext _ call _ P95 = P95 (xarici _ provayderlərin gizliliyi)'

2) Gecikmə mənbələrinin xəritəsi (və harada qazmaq)

1. Şəbəkə və protokollar: DNS, TCP handshakes, TLS, head-of-line (HTTP/1. 1), paket itkisi, BBR/ECN.
2. Şluz/balans: yavaş sağlamlıq-yoxlama, qeyri-sabit vaxt, isti pod.
3. App: bloklama, GC/stop-the-world, sinxron I/O, contention.
4. Saxlama: yavaş DB sorğuları, indekslərin olmaması, soyuq səhifələr.
5. Xarici xidmətlər: PSP/KYC, üçüncü tərəf API (dar SLA).
6. Növbələr və fon jobları: yenidən yüklənmiş işçilər, heç bir backpressure.
7. Cache/edge: cache səhvləri, zəif TTL, qeyri-sabit əlillik.

3) Şəbəkə və protokollar

3. 1 DNS/TCP/TLS

DNS prefetch/preconnect ön, uzun ömürlü IP PSP.
Müştərilərdə Keep-Alive/connection pooling; serverdə - əlaqələri yığın.
TLS: resumption/Session Tickets, müasir şifrələr paketi; təhlükəli idempotent əməliyyatları üçün 0-RTT çəkinin.
TCP: söhbətlər/kiçik paketlər üçün Nagle-i ('TCP _ NODELAY') söndürün; tune 'initial window', uyğun BBR daxil edin.

3. 2 HTTP/2 и HTTP/3

HTTP/2: multiplexing HOL kilidi HTTP/1 azaldır. 1; axınların prioritetlərinə nəzarət edin.
HTTP/3/QUIC: aşağı itki təsiri/RTT; mobil/beynəlxalq şəbəkədə faydalıdır.
Header compression: HPACK/QPACK, lakin ağlabatan başlıq ölçüsünü saxlayın.

3. 3 Balans/marşrut

Locality-aware (zonallıq), EWMA/least-request qarşı «isti» instansiyaları.
Seansların yapışması - yalnız state varsa; əks halda stateless + ümumi cache/seans.

4) Formatlar, yük, sıxılma

Sıxın: Brotli (mətn), fallback kimi Gzip; ikili formatları: gRPC/daxili API üçün Protobuf/Avro.
Payload azaldın: seçmə sahələr ('fields =...'), paginasiya, şərti GET (ETag/If-None-Match), delta cavabları.
GraphQL: persisted queries, «yağlı» fraqmentlərin qadağan edilməsi, dərinlik və çətinlik limitləri.
N + 1-dən çəkinin: coyns/prekompozisiya, aqreqatlar üçün batch-end nöqtələri.

5) Taymautlar, retrajlar, idempotentlik

Zəncir vaxtı: müştəri <şlz <appa <saxlama/xarici çağırış.
backoff + jitter ilə retray, yalnız müvəqqəti səhvlər üçün; budgets retraya qoyun.
İdempotentlik: açar/sorğu tokeni + nəticənin saxlanması; retrains əməliyyatları təkrarlamaq lazımdır (xüsusilə maliyyə).
Circuit Breaker: deqradasiya zamanı açın; «quyruqlar» üçün hedged/backup requests (P95 vasitəsilə dublikat göndərin).

6) Növbələr, asinxronizm və backpressure

Sinxron yolu bloklamayın: ağır əməliyyatlar (KYC skan, hesabat) - arxa plana.
Backpressure: növbədən istehlakı məhdudlaşdırın, paralelliyi düzəldin.
Batching/coalescing: kiçik əməliyyatları birləşdirin (məsələn, toplama ilə balans yeniləmə).
Outbox/Inbox: uğursuzluqların zəmanətli çatdırılması.

7) Əlavə: kirayələr və hovuzlar

DB/Caches/NTTR-ə qoşulma hovuzları; «boğmaq» üçün onları məhdudlaşdırın.
JVM: GC profilini (G1/ZGC), böyük alokasiyalardan çəkinin; .NET - ThreadPool/async; Node. js - event loop bloklamayın, CPU-ağır çıxarın.
Python: Asyncpg/httpx, uvloop; Worker-pool vasitəsilə CPU vəzifələri.
Warm-up: JIT/caches, «warm pools» instants pik.

8) Verilənlər bazası və caches

Indekslər və planlar: müntəzəm 'EXPLAIN', avtomatik vakuum/analiz, skan limiti.
Connection pooling (PgBouncer/Multiplexing), qısa əməliyyatlar.
Cache strategiyaları: read-through, write-through/write-behind; TTL + hadisələr üzrə əlillik.
Sharding/replikalar: slayvalardan oxumaq, «qaynar açarlar» - yerli keşlər (near-cache).

9) Caching və edge

Statik/kataloqlar üçün CDN/edge, API cavab cache (təhlükəsiz olduqda) 'Cache-Control', 'ETag'.
UX-stabillik üçün Stale-while-revalidate və stale-if-error.
Geo-paylama: ən yaxın ROR/region RTT azaldır.

10) P99 quyruqlarına qarşı memarlıq nümunələri

Hedged requests: astanadan sonra digər instansiyaya yavaş sorğunu təkrarlayın.
Request collapsing: DB-yə bir «aparıcı» sorğu, qalanları nəticəni gözləyir (fırtınalardan qaçır).
Prioritetizasiya: VIP/kritik əməliyyatlar - xüsusi hovuz/prioritet.
Graceful degradation: həddindən artıq yükləmə zamanı ikinci dərəcəli sahələri/widgetları kəsin.

11) Konfiqi (təqribən)

11. 1 NGINX (vaxt/sıxılma)

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 Envoy (hedge + retry budget)

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 (müştəri)

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) Observability: düzgün ölçün

RED/USE metrikləri + OTel treysləri: «trace _ id» şlyuz xidməti-DB-xarici API vasitəsilə.
Ayrı-ayrı etiketlər: 'api _ version', 'region', 'partner', 'endpoint'.
Dashboard: P50/P95/P99, queue time, error mix, retry rate, cache hit.
Hədəf ölkələrdən Synthetics/ASN (TR/BR/EU) və kritik yollarla (reg → depozit, payout).

SLO nümunəsi:
  • Core API: 'P95 ≤ 250ms', 'P99 ≤ 500ms' (30 gün)
  • PSP webhook emal: 'P99 ≤ 60s' retras ilə
  • Freshness kataloq: 'P95 lag ≤ 30s'

13) FinOps и latency

Millisaniyələr pula başa gəlir: CR/ARPPU-da $/ms uduşu qiymətləndirin.
Right-sizing: həmişə daha sürətli ≠ daha bahalı; səriştəli cache/formatları ucuz və sürətləndirir.
Egress/edge: CDN RTT və bölgədən gələn trafik xərclərini azaldır.

14) Optimallaşdırma çek siyahısı (addım-addım)

1. SLO qoyun və quyruqlarınızı/bölgələrinizi/tərəfdaşlarınızı ölçün (P95/P99).
2. HTTP/2/3, TLS resumption, uzun ömürlü birləşmələri daxil edin.
3. Sıxın və cavab arıqlayın: Brotli/Gzip, istək sahələri, pagination, ETag.
4. Taymaut/retraj/braker konfiqurasiya; idempotentlik əlavə edin.
5. Cache/edge: hit-rate və düzgün TTL; stale rejimləri.
6. BD: indekslər, planlar, hovuzlar, replikalar; N + 1 aradan qaldırın.
7. Ağır asinxronizasiya: növbələr, batching, backpressure.
8. Kritik yollar üçün Hedge/collapse/priority.
9. Warm-up və pik skeylinq (turnirlər/matçlar).
10. P99 və queue time sintetik və alert; müntəzəm perf-revyu.

15) Anti-nümunələr

Bir qlobal vaxt «hər şeyə» və nəzarətsiz retrajlar (DDOS özü).
ehtiyac olmadan seans yapışan → isti nod.
Böyük JSON heç bir sıxılma və filtre sahələri.
«isti yolda» yavaş xarici API üçün sinxron çağırışlar.
DB-də indekslərin/limitlərin olmaması; N + 1 ORM.
Heç bir cache/edge və ETag; daimi tam cavablar.
Bir «geri dönən» səbətə biznes və texniki səhvlərin qarışığı.

16) iGaming/fintech konteksti: praktik qeydlər

Req → depozit (CR): marşrutların prioriteti, ayrı bir hovuz, 'P99 ≤ 500ms'; deqradasiya - «bəzək» UI söndürmək.
PSP inteqrasiyası: konkarrensinin limitləri, müvəqqəti kodların retrayaları, warm konnektləri, regional egress-IP.
VIP əməliyyatları: zəmanətli hovuz/prioritet, ümumi növbələrdən yan keçmək.
Turnirlər/tədbirlər: qabaqcadan skayl, cache isitmə, prefetch.
Hesabat: async və SLA freshness, prod yolunu bloklamır.

Yekun

Latency optimizasiyası balans intizamıdır: şəbəkə (HTTP/2/3, TLS), protokollar və cache, idempotentlik ilə taymaut/retrai, DB/cache, asinxron nümunələr və P95/P99 müşahidə qabiliyyəti. Quyruqlara diqqət yetirərək və «dar ağızları» aradan qaldıraraq, cavabınızı sabitləşdirir, dönüşümü yaxşılaşdırır və millisaniyə dəyərini azaltırsınız - bu, həqiqətən biznesə təsir göstərir.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.