WinUpGo
Gözleg
CASWINO
SKYSLOTS
BRAMA
TETHERPAY
777 FREE SPINS + 300%
Cryptocurrency Casino Kripto kazino Torrent Gear - siziň ähliumumy torrent gözlegiňiz! Torrent Gear

Backend jogabyny optimizirlemek: nobatlar, async, backpressure

1) Näme üçin: maksatlar we SLO

Maksat, hatda partlamalaryň aşagynda-da durnukly çalt jogap. Bu iş SLO-ny beýan edýär:
  • API (CRUD/kataloglar): p95 ≤ 250-400 ms, error rate <1%.
  • Töleg/settlment (asinhron): tassyklamak üçin içerki SLA ≤ 2-5 minut, müşderä bolsa - derrew 202/Accepted + status-poller/webhuk.
  • WS/real-time: RTT p95 ≤ 120 мс, disconnect ≤ 0. 5%.

Açar: "haýal" ädimleri (üpjün edijiler, DB, daşarky API) ulanyjy jogabyndan nobatlar we başarnykly ýük çäklendirmeleri arkaly açmak.


2) Esasy surat: gizlinlik nireden alynýar

Dar ýerler: BD (howuzlar/indeksler), daşarky üpjün edijiler (PSP/oýun), I/O, GC/stop-mir, JSON seriýalizasiýasy, "agyr" agregasiýalar.

Alamatlary: p99 beýikligi, DB-e birikmeleriň nobaty, retraý partlamalary, zynjyr (retry storm).

Antidot: asinhron konweýerler + backpressure + wagt-autlar/retrailer + idempotentlik.


3) Asinhron nagyşlar: SEDA we CQRS

SEDA (staged event-driven architecture): gaýtadan işlemegi tapgyra bölüň (ingress → tassyklama → ýazgy → integrasiýa → habar). Her biriniň öz nobaty we paralellik çäkleri bar.

CQRS: Okamalary we ýazgylary bölüň. Ýazgy - journalurnalda/bazada, okamak - proýeksiýalardan/keşlerden.

Outbox: Waka ýazgy bilen bilelikde atom görnüşinde çap edilýär ("ýitirilen" habarlardan gaça durýarys).

Saga: global amallaryň ýerine öwezini dolmak bilen uzyn iş amallary.


4) Nobatlar we akymlar: saýlamak we sazlamak

RabbitMQ/NATS JetStream - Meseleler buýruklary (work queues), Kafka - repli wakalar/akymlar.

Jogaplara täsir edýän sazlamalar:
  • Prefetch/max in-flight: DB/daşarky API-ni "urmazlyk" üçin bir wagtyň özünde işlenýän worker habarlarynyň sanyny (mysal üçin 16-64) çäklendiriň.
  • Aker/gaýtalamalar: 'ack' idempotent ýazgysyndan soň; eksponensial gijikdirme we jitter bilen gaýtalanmalar.
  • DLQ/parking lot: uçsyz retraýalar ýok - N synanyşykdan soň Dead Letter Queue gidýär.
  • Partiýalaşdyrmak (Kafka): tertipleşdirmek üçin düýp manysy boýunça açar (userId/txnId); partiýalaryň sany arkaly parallelizm.

5) Ters basyş (backpressure) - gark bolmazlyk

Ideýa: diňe SLO-nyň gizlinlik çäklerinde mümkin boldugyça kabul ediň.

Usullar:
  • Admission control: her bir daşarky garaşlylyk üçin bäsdeşligi (semaphore/worker-pool) çäklendiriň: DB, PSP, oýun üpjün ediji.
  • Traffigiň ýaýramagy: token-bucket/leaky-bucket hyzmatyň girelgesinde we möhüm ugurlarda.
  • Ýokarky serhedi bolan nobatlar: doldurylanda guýrugyny kesýäris (429/503 + Retry-After) ýa-da asap-batch-e geçirýäris.
  • Adaptive concurrency (AIMD): üstünlik gazananyňyzda parallelizmi ösdüriň, wagt autlarynda peseldiň.
  • Circuit Breaker: 'closed → open → half-open' ýalňyşlyklar/daşarky API-iň wagt-autlary; open - degradasiýa (kesh/stab).
Pseudo-kod (Go-подобный):
go sem: = make (chan struct {}, 64 )//DB/PSP bäsdeşlik çäkleri

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) Wagt, retraý we jitter: "üç sany diri galmak kiti"

Wagt-aut SLO-dan gysga: eger SLO 400 ms bolsa, wagt-aut DB/üpjün edijä 250-300 ms; haýyşyň umumy taým-aut <400-600 ms.

Retraýlar çäkli we akylly: 1-2 synanyşyk max, diňe howpsuz amallar üçin (idempotent), eksponent we jitter bilen.

Koalisiýa: bir açar üçin gaýtalamalary jemläň.

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 we duplikasiýa

Idempotency-Key HTTP-e (goýumlar, tölegler), 'operation _ id' DB-e (özboluşly indeks).

Inbox/Outbox: gelýän webhoklar - elmydama 'event _ id' -den 'dedupe' -den üýtgewsiz inbox tablisasy arkaly; gidenler - geleşik boýunça outbox-dan.

Exactly-once "manysy boýunça": gaýtadan eltmäge/ýerine ýetirmäge rugsat berýäris, ýöne bir täsir.


8) Haýal amallar üçin çalt API

Synply jogap: 201/202 + status URL ('/status/{ id} '), ETA we retrai maslahatlar.

Webhuki/Server-Sent Events/WS - taýýar bolanda çaltlyk.

Müşderi düzgün-nyzamy: "Retry-After", idempotentlik, anketanyň çägi.

Jogap mysaly:
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) Gyzgyn ýolda işi azaltmak

Agyr zatlary arka tarapa geçiriň: özgerişler, agregasiýalar, habarnamalar, DWH ýazgysy.

Keş we proýeksiýalar: köplenç okalýan - gysga TTL we waka maýyplygy bolan cache-aside.

Batch-patterns: daşarky jaňlary toparlanyň (mysal üçin, üpjün edijiniň çäklerini N ms-de bir gezek soraň).

Serializasiýa: hyzmatara gatnaşyklar üçin çalt kodekler (protobuf/msgpack); JSON diňe edge.


10) DB gözegçilik astynda

Baglanyşyk howuzlary: ýokarky serhetler (ýadro/IO esaslanýar), howuza nobatlar goşulýar.

Indeksler we meýilnama: p95 explain + meýilnamalary regressiýa awtotestleri.

Wagt soraglary: gysga, 'statement _ timeout' (Postgres).

Hot rows/locks: "monolit" amalyň ýerine saga (balans wersiýasy), optimistik blokirleme.


11) WebSocket/real-time

Poçta çäklendiriji: batched broadcast, max msgs/sec per connection.

Içerki backpressure: kaply çykýan habarlaryň nobaty; drop low-priority.

Sticky-routing we PDB çykarylanda - reconnect-tupany döretmezlik üçin.


12) Syn etmek, çaklamazlyk

Metrikler (RED/USE + backpressure):
  • 'request _ rate', 'error _ ratio', 'latency _ p95/p99' ugurlar boýunça.
  • `queue_depth`, `lag_seconds`, `consumer_inflight`, `retries_total`, `dlq_rate`.
  • `backpressure_drops`, `admission_rejects`, `circuit_open`.
  • Для БД: `connections_in_use/max`, `locks`, `slow_queries`.
  • Söwda: span 'queue → worker → db/psp' taglary 'operation _ id', 'partition', 'retry'.
  • Loglar: gurluş, 'trace _ id', PII-siz; "open/close circuit".

13) Ýüküň aşagyndaky synag

Aç-model (arrivals/sec) Sessiýalar üçin Closed-model (VUs).

Profiller: gysgaça burst 60-120 s we soak 1-4 sagat.

Näsazlyk sanjymlary: daşarky API-ni 200-500 ms haýalladyň, p99/retrai/nobata serediň.

Ýaşyl zolagyň ölçegleri: 'queue _ lag', durnukly p95, 'dlq _ rate ≈ 0'.


14) Howpsuzlyk we ygtybarlylyk

TLS/mTLS boýunça nobatlar, habarlaryň goly, shema gözegçiligi (Euro/Protobuf + Schema Registry).

Idempotent producer (Kafka), aklanan ýerinde exactly-once tx.

Bulam-bujarlyk: garaşlylygy wagtal-wagtal "taşlaň" we zaýalanmaga serediň (circuit, fallback).


15) Konfigurasiýalaryň "bölekleriniň" mysallary

Nginx/Envoy girişi:
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; # SLO-dan gysga proxy_connect_timeout 0. 2s;
}
}
RabbitMQ (prefetch):

basic. qos (prefetch_count = 32) # CPU/IO balansy
Kafka ulanyjy (Java-bölek):
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) Giriş çek-sanawy (prod-ready)

  • Möhüm ýollar sinhron jogap we asinkron bejergisine (SEDA) bölünýär.
  • Admission control we daşarky endiklere bäsdeşlik çäkleri.
  • Wagt autlary SLO-dan gysga; retrailer ≤ 2, eksponent we jitter bilen; koalisiýa.
  • Circuit breaker + degradasiýa (kesh/stab), half-open syýasaty.
  • Nobatlar/akymlar: prefetch/in-flight, DLQ, açar partiýasy.
  • Idempotentlik (operation_id/Idempotency-Key), Outbox/Inbox, deduplikasiýa.
  • Keş: cache-aside, gysga TTL + waka maýyplygy.
  • BD: howuz çäkleri, statement_timeout, indeksler, anti-lock strategiýasy.
  • WS: habar çäkleri, batching, sticky-routing, PDB.
  • Syn edilişi: backpressure/queues/retries metrikleri, end-to-end söwdalary, daşbordlar.
  • Ýük we şowsuzlyk synaglary (açyk closed, burst + soak), ýaşyl zolagyň ölçegleri.

Jemleme

Çalt yzyna gaýtarmak "başga bir nagt ýasamak" däl-de, dolandyrylýan akym: giriş çäklidir, agyr - fon, her basgançaga nobat we çäkler, retraýalar seýrek we akylly, zynjyrlar bolsa circuit breaker we dempotentlik bilen goralýar. Wagt-aut tertip-düzgünini, synlanylyşy we yzygiderli stres synaglaryny goşuň - we p95/p99 daşary ýurt üpjün edijileriniň burstlary we kaprizleri astynda ýaşyl bolup galar.

× Oýunlardan gözleg
Gözleg başlamak üçin azyndan 3 nyşan giriziň.