GH GambleHub

Texnologiyalar va infratuzilma → Latency va API javobini optimallashtirish

Latency va API javobini optimallashtirish

1) «latency» nima va nima uchun bu muhim?

Latency - so’rovning jami kechikishi: tarmoq (DNS + TCP + TLS + RTT), balanschi/shlyuz, ilova, DB/kesh/navbatlar, tashqi integratsiyalar. UX, CR va SLO «dumini» yo’q qilayotgan biznes uchun o’rtacha emas, balki P95/P99 juda muhim.

Asosiy SLI:
  • ’SLI _ latency _ P95 = P95 (_ javob vaqti)’ uchun 5/30 daqiqa
  • ’SLI _ latency _ P99 = P99 (_ javob vaqti)’
  • ’SLI _ queue _ time = P95 (_ vorkerning _ navbatidagi _ vaqt)’
  • ’SLI _ ext _ call _ P95 = P95 (tashqi _ provayderlarning yashirligi)’

2) Kechikish manbalari xaritasi (va qayerga qazish kerak)

1. Tarmoq va protokollar: DNS, TCP handshakes, TLS, head-of-line (HTTP/1. 1), paketlarni yo’qotish, BBR/ECN.
2. Shlyuz/balanschi: sekin health-check, nevalid taymautlar, issiq pod.
3. Ilova: blokirovka, GC/stop-the-world, sinxron I/O, contention.
4. Omborxonalar: sekin so’rovlar, indekslar yo’qligi, sovuq sahifalar.
5. Tashqi servislar: PSP/KYC, uchinchi tomon API (tor SLA).
6. Navbatlar va orqa fon joblari: ortiqcha yuklangan vorkerlar, backpressure yoʻq.
7. Kesh/edge: kesh xatolari, zaif TTL, nolalid nogironlik.

3) Tarmoq va protokollar

3. 1 DNS/TCP/TLS

DNS prefetch/preconnect frontda, uzoq umr ko’radigan IP PSP.
Keep-Alive/connection pooling mijozlarda; serverda - ulanishlarni birlashtirish.
TLS: resumption/Session Tickets, zamonaviy shifrlar paketi; xavfli idempotent operatsiyalari uchun 0-RTT qilishdan qoching.
TCP: chatlar/kichik paketlar uchun Nagle (’TCP _ NODELAY’) ni oʻchiring; tune’initial window’, mos keladigan BBRni yoqing.

3. 2 HTTP/2 и HTTP/3

HTTP/2: multiplekslash HOL blokirovkasini HTTP/1. 1; oqimlarning ustuvorligini kuzatib boring.
HTTP/3/QUIC: yo’qotishlar/RTT ta’siri past; mobil/xalqaro tarmoqlarda foydali.
Header compression: HPACK/QPACK, ammo sarlavhalar hajmini saqlang.

3. 3 Balanslash/routing

Locality-aware (zonallik), EWMA/least-request «issiq» instansiyalarga qarshi.
Seanslarni yopishtirish - faqat state mavjud bo’lsa; aks holda stateless + umumiy kesh/sessiya.

4) Formatlar, foydali yuk, kompresssiya

Qisish: Brotli (matn), Gzip fallback sifatida; binar formatlar: gRPC/ichki API uchun Protobuf/Euro.
Payload qismini kamaytiring: tanlangan maydonlar (’fields =...’), paginatsiya, shartli GET (ETag/If-None-Match), delta-javoblar.
GraphQL: persisted queries, «yog’» parchalarini taqiqlash, chuqurlik va murakkablik chegaralari.
N + 1 dan qoching: joylar/prekompozitsiya, agregatlar uchun batch-endpointlar.

5) Taymautlar, retrajlar, idempotentlik

Taymautlar zanjir boʻyicha: mijoz <shlyuz <appa <saqlash/tashqi chaqiruv.
Faqat vaqtinchalik xatolar uchun backoff + jitter bilan retrajlar; budgetlarni retrajga qo’ying.
Idempotentlik: soʻrov kaliti/tokeni + natijani saqlash; retralar operatsiyalarni (ayniqsa moliyaviy) takrorlamasliklari kerak.
Circuit Breaker: buzilganda oching; «quyruqlar» uchun hedged/backup requests (dublikatni P95 orqali yuborish).

6) Navbatlar, asinxronizm va backpressure

Sinxron yo’lni to’sib qo’ymang: og’ir operatsiyalar (KYC skaner, hisobot) - orqa fonda.
Backpressure: navbatdan foydalanishni cheklang, parallellikni aniqlang.
Batching/coalescing: kichik operatsiyalarni birlashtiring (masalan, balansni yangilash va birlashtirish).
Outbox/Inbox: muvaffaqiyatsiz tugaganida hodisalarni kafolatlangan yetkazib berish.

7) Ilova: rantaym va pullar

DB/kessham/MTTRga ulanish pullari; ularni cheklab qo’ying, shunda orqa tomonni bo’g’ib qo’ymang.
JVM: GC (G1/ZGC) profilini oching, katta alokatsiyalardan qoching; .NET - ThreadPool/async; Node. js - event loop to’sib qo’ymang, og’ir CPU chiqaring.
Python: asinxron drayverlar (asyncpg/httpx), uvloop; CPU vazifalari worker-pool orqali.
Warm-up: JIT/keshlarni isiting, «warm pools» instantsiyalarini cho’qqilarga.

8) Ma’lumotlar bazalari va keshlar

Indekslar va rejalar: muntazam’EXPLAIN’, avto-vakuum/tahlil, skanlar limiti.
Connection pooling (PgBouncer/Multiplexing), qisqa tranzaksiyalar.
Cash-strategiyalar: read-through, write-through/write-behind; TTL + hodisalar bo’yicha nogironlik.
Sharding/replikalar: sleyvlardan o’qish, «issiq kalitlar» - mahalliy keshlar (near-cache).

9) Keshlash va edge

Statik/kataloglar uchun CDN/edge,’Cache-Control’,’ETag’bo’yicha API javoblar keshi (xavfsiz bo’lsa).
Stale-while-revalidate va stale-if-error UX-barqarorlik uchun.
Geo-taqsimot: eng yaqin XTR/mintaqa RTTni kamaytiradi.

10) P99 chiqindilariga qarshi arxitektura patternlari

Hedged requests: chegaradan keyin boshqa instansiyaga sekinlik soʻrovini takrorlang.
Request collapsing: bitta «yetakchi» DB soʻrovi, qolganlari natijani kutmoqda (boʻronlardan qochadi).
Prioritization: VIP/tanqidiy operatsiyalar - ajratilgan pul/ustuvorlik.
Graceful degradation: ortiqcha maydonlarni/vidjetlarni qisqartiring.

11) Konfigi (taxminan)

11. 1 NGINX (taymaut/kompresssiya)

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 (mijoz)

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: to’g "ri o’lchang

RED/USE metrika + treys OTel:’trace _ id’orqali shlyuz-servis-DB-tashqi API.
Alohida belgilar:’api _ version’,’region’,’partner’,’endpoint’.
Dashbordlar: P50/P95/P99, queue time, error mix, retry rate, cache hit.
Maqsadli mamlakatlar Synthetics/ASN (TR/BR/EU) va tanqidiy yo’llar bo’yicha (reg → depozit, payout).

SLO misoli:
  • Core API:’P95 ≤ 250ms’,’P99 ≤ 500ms’(30 kun)
  • PSP webhook qayta ishlash:’P99 ≤ 60s’retralari bilan
  • Freshness katalogi:’P95 lag ≤ 30s ’

13) FinOps и latency

Millisekundlar pul turadi: CR/ARPPU da $/ms yutuq baholang.
Right-sizing: tezroq ≠ har doim qimmatroq; savodli kesh/formatlar arzonlashtiradi va tezlashtiradi.
Egress/edge: CDN RTT va mintaqadan chiqadigan trafik narxini kamaytiradi.

14) Optimallashtirish chek-varaqasi (bosqichma-bosqich)

1. SLOni joylashtiring va endpointlar/mintaqalar/sheriklar bo’yicha dumlarini (P95/P99) o’lchang.
2. HTTP/2/3, TLS resumption, uzoq davom etadigan ulanishlarni yoqing.
3. Javoblarni siqing va vazn yo’qoting: Brotli/Gzip, so’rov dalalari, paginatsiya, ETag.
4. Taymaut/retray/breykerlarni moslash; idempotentlik qo’shing.
5. Kesh/edge: hit-rate va toʻgʻri TTL; stale-rejimlar.
6. DQ: indekslar, rejalar, pullar, replikalar; N + 1 ni olib tashlang.
7. Og’ir: navbatlar, batching, backpressure.
8. Kritik yoʻllar uchun xedge/collapse/priority.
9. Warm-up va cho’qqilarga taxminiy skeyling (turnirlar/o’yinlar).
10. Sintetika va alertlar P99 va queue time; muntazam perf-revyu.

15) Anti-patternlar

Bitta global vaqt «hamma narsaga» va nazoratsiz retrajlar (DDOS o’zi).
Seanslarni keraksiz yopishtirish → issiq nodlar.
Katta JSONlar siqish va maydon filtrlarisiz.
«Issiq yo’lda» sekin tashqi APIga sinxron qo’ng’iroqlar.
DBda indekslar/limitlar mavjud emasligi; ORMda N + 1.
Kesh/edge va ETag mavjud emas; doimiy to’liq javoblar.
Biznes va texnik xatolarni bitta «retraj» savatga aralashtirish.

16) iGaming/fintech konteksti: amaliy notalar

Reg → depozit (CR): yo’nalishlarning ustuvorligi, alohida pul,’P99 ≤ 500ms’; degradatsiya - «bezak» UI o’chirish.
PSP integratsiyalari: konkarrensi limitlari, vaqtinchalik kodlar bo’yicha retraylar, warm-konnektlar, mintaqaviy egress-IP.
VIP-operatsiyalar: kafolatlangan pul/ustuvorlik, umumiy navbatlarni chetlab o’tish.
Turnirlar/tadbirlar: oldindan aytiladigan skeyl, kesh isitish, prefetch.
Hisobot: async va SLA freshness, prod-yo’lni to’sib qo’ymaydi.

Jami

Latency - bu balans intizomi: tarmoq (HTTP/2/3, TLS), protokollar va kesh, idempotentlik taymautlari/retraalari, DD/keshlar, asinxron patternlar va P95/P99 kuzatilishi. Siz dumlarga e’tibor qaratib, «tor og’izlarni» yo’q qilsangiz, siz javobni barqarorlashtirasiz, konversiyani yaxshilaysiz va biznesga ta’sir qiladigan millisekundlar narxini pasaytirasiz.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Telegram
@Gamble_GC
Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.