GH GambleHub

Aşağı gecikmə arxitekturası

Niyə aşağı gecikmə arxitekturasına ehtiyacınız var?

Aşağı gecikmə yalnız «sürətli orta» deyil, real yük altında sabit quyruqlardır (p95/p99). Bunun yolu gecikmələrin büdcəsi, növbələrin/retrajların nizam-intizamı, məlumatların və keşlərin yaxınlığı, düzgün protokollar/konnektlər və ciddi istismar (limitlər, müşahidə, deqradasiya).

Məqsədlər və gecikmə büdcəsi

1. SLO-nu təyin edin: "p95 ≤ 120 ms, p99 ≤ 250 ms, səhv ≤ 0. 3%».
2. Büdcə yığın: müştəri → edge → region → xidmətlər → stores → cavab.

3. Limitləri paylayın (məsələn, ümumi SLO 120 ms p95):
  • Müştəri-edge: 15 ms
  • Edge-region: 15 ms
  • Gateway/L7: 10 ms
  • Biznes xidməti: 40 ms
  • Saxlama/Cache: 25 ms
  • Ehtiyat/Jitter: 15 ms
💡 Hər hansı bir komponent öz büdcəsinə uyğun gəlmirsə, zaman və deqradasiya planına sahib olmalıdır.

Metriklər və quyruqlar

p50/p90/p95/p99 ölçün, və hər hop.
Etiketlərə bölünün: region, üsul, müştəri versiyası, şəbəkə növü (mobile/broadband), payload ölçüsü.
Növbə və icra vaxtını ayırın (bax: Little 's Law: L = λ· W).
Tail-həssas texnika: hedged requests (nadir və qorunması ilə), kaskad retras qadağan.

Şəbəkə və protokollar

QUIC/HTTP/3: mobil/rouminqdə daha az itki, head-of-line olmadan multiplex.
TLS 1. 3 və 0-RTT (yalnız təhlükəsiz idempotent sorğular üçün).
DNS: dinamik marşrutlar üçün qısa TTL, POP üçün Anycast.
TCP: 'TCP _ NODELAY' (ehtiyatlı), haqlı olduğu yerdə lazımsız 'Nagle '/' Delayed ACK' off; keep-alive və sürətli bağlantı bərpa.
gRPC/HTTP/2: multiplex, flow-control və pəncərə parametrləri; kiçik payload həddindən artıq sıxışdırılması qarşısını almaq.

Bağlantılar və hovuzlar

Pulları domenlərə/təyinatlara bölün (belə ki, «yavaş qonşular» yuvaları götürmür).
Warm-up/Keep-alive: Davamlı isti konnektlərin sayını saxlayın.
Connection coalescing (HTTP/2/3) и reuse.
Time-auts: 'connect', 'TLS handshake', 'request', 'idle'. Müxtəlif hoplarda fərqli dəyərlər.

Verilənlərin və hesablamaların lokallığı

Edge/region: oxu və asan hesablamaları istifadəçiyə yaxınlaşdırın (bax: «Edge-düyünlər və regional məntiq»).
Read-local/Write-global: oxumaq üçün replikalar, yazmaq üçün qlobal həqiqət.
Cache-iyerarxiya: CDN/edge-cache → regional KV/Redis → xidmət cache → yerli in-proc.
Heating (warming): Release/ölçmə zamanı qaynar açarları yükləmək.
Aşağı riskli məlumatlar üçün Stale-while-revalidate.

Anbarlar və indekslər

O (1 )/O (logN) giriş sxemlərini seçin; tez-tez sorğu altında dar indeksləri saxlamaq.
Hot-keys: 'hash (id)' ilə şardlayın və ya vahid olmaq üçün «duz» əlavə edin.
DB/cache çıxışında Batching (ağlabatan ölçülərə qədər) onlarla tək zəng əvəzinə.
OLTP üçün - ən qısa əməliyyatlar; seriya kilidləri əvəzinə read-committed/snapshot.

Rəqabət və kilidsiz üsullar

İlk növbədə gözləntiləri aradan qaldırın, sonra CPU optimallaşdırın.
Async I/O və bloklanmayan sürücülər; uyğun olduğu yerlərdə lock-free strukturları.
Qlobal mutexlərdən çəkinin; granular-loki, CAS/version.
Axın hovuzları: Kontekst-svitçalara yapışmamaq üçün ölçüləri düzəldin.
NUMA-şüurlu: soketlərə axınların bağlanması, yerli allokatorlar.

JVM/GC və rantaym tuning (tətbiq olunarsa)

Kod və allokasiya Generation: az yan təsiri → az GC fasilələr.
Məqsədli fasilələrlə müasir kollektorlar (G1/ZGC/Shenandoah); escapes və bufer icarə.
Start-asılı funksiyalar üçün Class/Data sharing, JIT warming, AOT/native-image.
GC fasilələrinin histoqramlarını ümumi gecikmə büdcəsinə daxil edin.

Növbələr, backpressure, həddindən artıq yük qorunması

Növbələrin ölçüsü = kiçikdir: uzun növbələr «gözəl p50» verir və p99 öldürür.
Açıq backpressure: yığmaqdan daha yavaş cavab verin.
Adaptive concurrency: artan səhvlər/gecikmə zamanı paralelliyi azaltın (VEGAS/gradient alqoritmlər, AIMD).
Circuit breaker: axın deqradasiyasında sürətli uğursuzluqlar, hovuzlar və resurslar üçün bulkhead (kabin şirkətləri).
Rate limit: sürüşmə pəncərəsi/tokenlər, prioritetləşdirmə (user tier/critical-path).

Retray, hedcinq və idempotentlik

Yalnız transient səhvlərə, jitter və maksimum cəhdlərə retrailer.
İdempotent əməliyyatları və 'Idempotency-Key' - təkrarlamalar üçün məcburidir.
Hedged requests: astanadan sonra dubl göndərin (məsələn, p95 + 10 ms) və həmişə əlavə ləğv edin.
Koordinasiya olmadan hər bir təbəqə daxilində heç vaxt geri çəkməyin - fırtına alın.

Caching və qızdırma

İsti yol standart yük (in-proc/LRU) ilə şəbəkəsiz olmalıdır.
Mənfi cache 10-60 s itkin açarları döymək deyil.
Buraxılış/skeylinq zamanı kütləvi istiləşmə: qaynar açar siyahıları, read-ahead, background refresh.

Deqradasiya və follbeklər

Graceful Degradation: gecikmə artdıqda (daha az detallı cavab, zənginləşdirmə dayandırılması) ikinci dərəcəli uğurları kəsin.
Soft timeouts: 5xx əvəzinə əsas cavab/cache qaytarın.
Fail-open/Fail-closed - Hər zəng üçün açıq sənədləşdirin.

Müşahidə və profil

Distributiv treysinq: hər hopda span, quyruqların samplinqi (tail-based).
RED/USE метрики: Rate, Errors, Duration / Utilization, Saturation, Errors.
Top-N «yavaş» marşrutları gündəlik.
Aşağı overhead (eBPF/async-profiler/Flight Recorder) məhsulunda profilləşdiricilər (alloc/cpu/lock).
Müxtəlif ASN/şəbəkə və mobil kanallardan sintetik.

Performans testi

Latency-SLO testləri (p95/p99) real payload və varyativlik ilə.
Chaos ssenariləri: DNS deqradasiyası, paket itkilərinin artması, TLS gecikmələri, «yavaş» stor.
Cold-start/scale-up: caches boş olduqda buraxıldıqdan sonra ilk dəqiqələri ölçün.
Yük hovuzları ssenarilərə görə bölünür (read/write testlərinə müdaxilə etməyin).

Mini şablonlar

Taymaut/retraj siyasəti (psevdo)

yaml timeouts:
connect: 100ms tls_handshake: 150ms request_p95_budget: 80ms retries:
max_attempts: 2 backoff: exp_jitter(10ms..60ms)
retry_on: [CONNECT_ERROR, TIMEOUT, 502, 503, 504]
hedging:
enabled: true threshold: p95 + 10ms cancel_extra_on_first_success: true circuit_breaker:
error_rate_threshold: 5%
p95_threshold_increase: 30%
half_open_after: 10s

Hovuzlar və Bulkhead 's

yaml pools:
checkout:
max_conns: 256 per_host: 64 queue: 8 # small analytics queue:
max_conns: 64 queue: 4

Deqradasiya ilə cavab

json
{
"status": "ok",
"profile": { "id": "u123", "name": "…"},
"recommendations": "degraded, "//disabled the heavy part
"served_from": "edge-cache",
"trace_id": "…"
}

Tətbiq halları

iGaming/maliyyə: ödənişin avtorizasiyası <200 ms p95, limitlər/balans - regional proyeksiyalardan oxunma, qeydlər - versiyalı idempotent.
Marketinq/tövsiyələr: cavablar <100 ms p95, edge-də fic bayraqların cache, modellər - ilkin skoring + isti yolda sürətli qaydalar.
Mobil müştərilər: HTTP/3, aqressiv reuse konnektləri, azaldılmış payload (Protobuf), qoruyucu vaxt və offline cache.

Anti-nümunələr

Oxucuların qarşısında uzun növbələr: «gözəl orta» və p99 öldürüldü.
Koordinasiya olmadan hər bir təbəqədə kaskad retrajları.
Qlobal «mega-cache» əlillik və istilik olmadan.
Qeyri-müəyyən vaxtlar (hər yerdə «default») nəzarətsiz quyruqlardır.
Bütün trafik üçün bir ümumi bağlantı hovuzu - head-of-line kilidi.
stateful effektləri ilə edge ağır məntiq.
Quyruq telemetri - p99 «görmürsünüz».

Production çek siyahısı

  • Hops və onun üçün vaxt gecikməsi büdcəsi var.
  • Daxil HTTP/2/3, TLS 1. 3, bağlantı hovuzları və warm-up.
  • Cache hiyerarxiyası, isti açarların siyahısı və istilik strategiyaları.
  • Read-local/Write-global və qaynar açarlar.
  • Açıq backpressure, kiçik növbələr, circuit-breakers və bulkhead.
  • Jitter ilə retray, idempotent, məhdud hedcinq.
  • Bölgə/versiya/müştəri etiketləri ilə Trace; p95/p99 monitorinqi.
  • ASN/mobile, cold-start ssenariləri və chaos sintetika ilə perf testlər.
  • Deqradasiya və follbeklərin prosedurları sənədləşdirilmişdir.
  • p95/p99 SLO real yük uyğun.

FAQ

Niyə p99 orta daha vacibdir?
Çünki istifadəçilər orta deyil, quyruqlarla qarşılaşırlar. p99 «həqiqətən nə qədər ağrılı olduğunu» göstərir.

Hər yerdə hedcinq daxil etməyə dəyərmi?
Yox. Kritik yollarda nadir quyruqlar üçün və yalnız ciddi limitlər/idempotentlik üçün faydalıdır.

Soyuq başlanğıcı necə azaltmaq olar?
Cache/birləşmələrin istiləşməsi, ön kompilyasiya/JIT istiləşməsi, lazy-başlanğıcların minimuma endirilməsi, warm-hovuzlar.

«Şəbəkəni məğlub etmək» mümkündürmü?
Qismən: HTTP/3, edge-POP, Anycast, kompakt payload, connection reuse və ağlabatan vaxtlar.

Yekun

Aşağı gecikmə arxitekturası razılaşma və nizam-intizam sistemidir: gecikmə büdcəsi, məlumatların yaxınlığı, kiçik növbələr, proqnozlaşdırıla bilən retralar, cash-iyerarxiyalar, düzgün protokollar və amansız quyruq müşahidə. Bu prinsiplərə uyğun olaraq, sabitlik və cüzdan qurbanları olmadan p95/p99-u idarə edirsiniz.

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.