WinUpGo
Qidiruv
CASWINO
SKYSLOTS
BRAMA
TETHERPAY
777 FREE SPINS + 300%
Kriptovalyuta kazinosi Kripto-kazino Torrent Gear - sizning universal torrent qidiruvingiz! Torrent Gear

Backend javobini optimallashtirish: navbatlar, async, backpressure

1) Nima uchun: maqsadlar va SLO

Maqsad - portlashlar ostida ham barqaror tez javob berish. Biznes buni quyidagicha ifodalaydi:
  • API (CRUD/kataloglar): p95 ≤ 250-400 ms, error rate <1%.
  • To’lov/settlment (asinxron): tasdiqlash uchun ichki SLA ≤ 2-5 daqiqa, mijozga esa - tezkor 202/Accepted + status-poller/vebxuk.
  • WS/real-time: RTT p95 ≤ 120 мс, disconnect ≤ 0. 5%.

Kalit: foydalanuvchi javobidan «sekin» qadamlarni (provayderlar, DB, tashqi API) navbatlar va yukni malakali cheklash orqali ochish.


2) Asosiy rasm: latentlik qayerda olinadi

Tor joylar: BD (pullar/indekslar), tashqi provayderlar (PSP/oʻyin), I/O, GC/stop-world blokirovka, JSON serializatsiya, «ogʻir» agregatsiyalar.

Alomatlar: o’sish p99, DBga birikmalar navbati, retray portlashlari, vaqt-autlar zanjiri (retry storm).

Antidot: asinxron konveyerlar + backpressure + taym-autlar/retray + idempotentlik.


3) Asinxron patternlar: SEDA va CQRS

SEDA (staged event-driven architecture): jarayonni bosqichga ajrating (ingress → validatsiya → yozuv → integratsiya → xabarnoma). Har birining oʻz navbati va parallellik chegarasi bor.

CQRS: oʻqish va yozishni ajrating. Yozuv - jurnal/bazaga, oʻqish - proyeksiyalar/keshlardan.

Outbox: hodisa yozuv bilan birga atomik tarzda nashr etiladi («yoʻqolgan» xabarlardan qoching).

Saga: global o’rniga kompensatsiya tranzaksiyalari bilan uzoq biznes jarayonlari.


4) Navbatlar va oqimlar: tanlash va tyuning

RabbitMQ/NATS JetStream - vazifalar buyruqlari (work queues), Kafka - repleyli voqealar/oqimlar.

Javobga taʼsir qiladigan moslamalar:
  • Prefetch/max in-flight: BD/tashqi API’ni «to’ldirmaslik» uchun bir vaqtning o’zida ishlov beriladigan vorker xabarlari sonini (masalan, 16-64) cheklang.
  • Aker/takrorlar:’ack’idempotent yozuvidan keyin; eksponensial kechikish va jitter bilan takrorlash.
  • DLQ/parking lot: uchsiz retraylar yo’q - N urinishlardan so’ng Dead Letter Queue’ga o’tadi.
  • Partiyalashtirish (Kafka): mohiyatan tartibga solish uchun (userId/txnId) kaliti; partiyalar soni orqali parallellik.

5) Teskari bosim (backpressure) - qanday qilib cho’kib ketmaslik kerak

G’oya: SLOning yashirin chegarasida ishlov berish mumkin bo’lgan miqdorni qabul qilish.

Texnikalar:
  • Admission control: har bir tashqi qaramlik uchun raqobatni (semaphore/worker-pool) cheklang: DB, PSP, o’yin provayderi.
  • Sheyping trafigi: token-bucket/leaky-bucket servis kirish joyida va kritik yo’nalishlarda.
  • Yuqori chegarali navbatlar: to’ldirilganda - dumini kesib tashlaymiz (429/503 + Retry-After) yoki asap-batch ga o’tkazamiz.
  • Adaptive concurrency (AIMD): muvaffaqiyat bilan parallellikni o’stiring, taym-autlarda kamaytiring.
  • Circuit Breaker:’closed → open → half-open’xatolari/tashqi API taym-autlari; open - degradatsiya (kesh/stab).
Psevdokod (Go-kabi):
go sem: = make (chan struct {}, 64 )//DB/PSPga nisbatan raqobat limiti

func handle(req) {
select {
case sem <- struct{}{}:
defer func(){ <-sem }()
ctx, cancel:= context. WithTimeout(req. ctx, 300time. Millisecond)
defer cancel()
res, err:= db. Do(ctx, req)
if err == context. DeadlineExceeded { metrics. Timeouts. Inc(); return TooSlow() }
return Ok(res)
default:
metrics. Backpressure. Inc()
return TooBusy(429, "Retry-After: 0. 2")
}
}

6) Taym-autlar, retraylar va jitter: «omon qolishning uchta kiti»

Taym-autlar SLOdan qisqaroq: agar SLO 400 ms bo’lsa, DB/provayderga taym-aut 250-300 ms; so’rovning umumiy taym-aut <400-600 ms.

Cheklangan va aqlli retraylar: 1-2 urinishlar max, faqat xavfsiz operatsiyalar uchun (idempotent), eksponent va jitter bilan.

Koalitsiya: bitta kalit uchun takrorlarni birlashtirish.

Psevdokod (eksponent + jitter):
python for attempt in range(0, 2):
try:
return call(dep, timeout=0. 3)
except Timeout:
backoff = (0. 05 (2attempt)) + random. uniform(0, 0. 05)
sleep(backoff)
raise UpstreamUnavailable

7) Idempotentlik va deduplikatsiya

Idempotency-Key HTTPga (depozitlar, to’lovlar),’operation _ id’DBga (noyob indeks).

Inbox/Outbox: kirish vebxuklari - har doim’dedupe’dan’event _ id’gacha oʻzgarmas inbox jadvali orqali; chiquvchilar - tranzaksiya bo’yicha outboxdan.

Exactly-once «ma’nosi bo’yicha»: qayta yetkazib berishga/bajarishga ruxsat beramiz, lekin bitta ta’sir.


8) Sekin operatsiyalar uchun tez API

Sinxron javob: 201/202 + status URL (’/status/{ id}’), ETA va retray maslahatlar.

Vebxuki/Server-Sent Events/WS - push steyta tayyor bo’lganda.

Mijoz intizomi: «Retry-After», idempotentlik, so’rov limiti.

Javob namunasi:
json
HTTP/1. 1 202 Accepted
Location: /v1/withdrawals/req_9f2/status
Retry-After: 2
{
"request_id": "req_9f2",  "state": "processing",  "next_check_sec": 2
}

9) Issiq yo’lda ishlashni kamaytiramiz

Ogʻir narsalarni orqa fonda olib boring: konvertatsiyalar, agregatsiyalar, xabarnomalar, DWHga yozish.

Kesh va proyeksiyalar: tez-tez o’qiladigan - qisqa TTL va hodisa nogironligi bo’lgan cache-aside.

Batch-patternlar: tashqi qo’ng’iroqlarni guruhlang (masalan, provayder limitlarini N ms da bir marta so’rash).

Seriallashtirish: xizmatlararo aloqalar uchun tezkor kodeklar (protobuf/msgpack); JSON faqat edge.


10) DQ nazorat ostida

Ulanish pullari: yuqori chegaralar (yadrolardan/IOdan kelib chiqqan holda), pulga navbatlar kiritilgan.

Indeks va reja: p95 explain + reja regressiyasi avtotestlari.

Soʻrov vaqti: qisqa,’statement _ timeout’(Postgres).

Hot rows/locks: kalit, optimistik blokirovka (balans versiyasi), «monolit» tranzaksiya o’rniga saga.


11) WebSocket/real-time

Tarqatish uchun cheklov: batched broadcast, max msgs/sec per connection.

Ichki backpressure: kap bilan chiqadigan xabarlarning navbati; to’lib ketganda - drop low-priority.

Sticky-routing va PDB chiqarilganda - reconnect-bo’ronni ko’paytirmaslik uchun.


12) Taxmin qilmaslik uchun kuzatish

Metriklar (RED/USE + backpressure):
  • ’request _ rate’,’error _ ratio’,’latency _ p95/p99’yo’nalishlari bo’yicha.
  • `queue_depth`, `lag_seconds`, `consumer_inflight`, `retries_total`, `dlq_rate`.
  • `backpressure_drops`, `admission_rejects`, `circuit_open`.
  • Для БД: `connections_in_use/max`, `locks`, `slow_queries`.
  • Treyslar: span’queue → worker → db/psp’s taglar’operation _ id’,’partition’,’retry’.
  • Logi: struktural,’trace _ id’, PIIsiz; alohida hodisalar «open/close circuit».

13) Yuk ostida test o’tkazish

Portlashlar uchun Open-model (arrivals/sec); Seanslar uchun closed-model (VUs).

Profillar: qisqa burst 60-120 s va soak 1-4 soat.

Nosozlik in’ektsiyalari: tashqi APIni + 200-500 ms ga sekinlashtiring, p99/retray/navbatga qarang.

Yashil maydon mezonlari:’queue _ lag’, barqaror p95,’dlq _ rate ≈ 0’.


14) Xavfsizlik va ishonchlilik

TLS/mTLS bo’yicha navbatlar, xabarlar imzosi, sxemani nazorat qilish (Euro/Protobuf + Schema Registry).

Idempotent producer (Kafka), oqlangan joyda exactly-once tx.

Xaos-rejim: vaqti-vaqti bilan qaramlikni «tashlang» va tanazzulga (circuit, fallback) qarang.


15) Konfiguratsiya «bo’laklari» misollari

Nginx/Envoy kirish sheyping:
nginx limit_req_zone $binary_remote_addr zone=api:10m rate=20r/s;
server {
location /api/ {
limit_req zone=api burst=40 nodelay;
proxy_read_timeout 0. 6s; # qisqa SLO proxy_connect_timeout 0. 2s;
}
}
RabbitMQ (prefetch):

basic. qos (prefetch_count = 32) # CPU/IO balansi
Kafka consumer (Java-parcha):
java props. put(ConsumerConfig. MAX_POLL_RECORDS_CONFIG, 200);
props. put(ConsumerConfig. FETCH_MAX_BYTES_CONFIG, 5_000_000);
props. put(ConsumerConfig. MAX_POLL_INTERVAL_MS_CONFIG, 60_000);

16) Joriy etish chek-varaqasi (prod-ready)

  • Tanqidiy yo’llar sinxron javob va asinxron ishlov berishga (SEDA) bo’lingan.
  • Admission control va tashqi qaramlik uchun raqobat limitlari.
  • Vaqt-autlar SLOdan qisqaroq; retrai ≤ 2, eksponent va jitter bilan; koalitessing.
  • Circuit breaker + degradatsiya (kesh/stab), half-open siyosati.
  • Navbatlar/oqimlar: prefetch/in-flight, DLQ, kalitlar bo’yicha partiyalar.
  • Idempotentlik (operation_id/Idempotency-Key), Outbox/Inbox, deduplikatsiya.
  • Kesh: cache-aside, qisqa TTL + hodisaviy nogironlik.
  • BD: pullar limitlari, statement_timeout, indekslar, anti-lock strategiyalari.
  • WS: xabar limitlari, batching, sticky-routing, PDB.
  • Kuzatilganlik: backpressure/queues/retries metrikalari, end-to-end treyslari, dashbordlar.
  • Yuklash va ishdan chiqish testlari (open + closed, burst + soak), yashil zona mezonlari.

Xulosa

Tezkor orqa fon - bu «yana bir kesh qilish» emas, balki boshqariladigan oqim: kirish cheklangan, og’ir - orqa fonda, navbat va chegaralar bilan har bir bosqich, retrajlar noyob va aqlli, zanjirlar esa circuit breaker va idempotentlik bilan himoyalangan. Taym-autlar intizomini, kuzatuv va muntazam stress testlarini qo’shing - va sizning p95/p99-laringiz hatto tashqi provayderlarning burstlari va injiqliklari ostida ham yashil rangda qoladi.

× Oʻyinlar boʻyicha qidiruv
Qidiruvni boshlash uchun kamida 3 ta belgi kiriting.