GH GambleHub

Տեխնոլոգիաներ և ենթակառուցվածքներ www.Latency և API արձագանքի օպտիմիզացում

Latency և API արձագանքի օպտիմիզացում

1) Ի՞ նչ է «latency» -ը, և ինչո՞ ւ է դա կարևոր։

Latency-ը ընդհանուր հարցման ուշացում է 'ցանցը (SDC + TCP + TMS + RTT), հավասարակշռությունը/դարպասը, ծրագիրը, BD/kashi/հերթը, արտաքին։ Բիզնեսի համար քննադատական են P95/P99, ոչ թե միջինը, դա UX, CR և SLO-ն է։

Հիմնական SLI։

«SLI _ latency _ P95 = P95 (ժամանակը _ արձագանք)» 5/30 րոպեում։

«SLI _ latency _ P99 = P99 (ժամանակը _ արձագանք)»

«SLI _ queue _ time = P95 (ժամանակը _ հերթում _ worker)»

«SLI _ ext _ calt _ P95 = P95 (լատենտ _ արտաքին _ պրովայդեր)»

2) Հետաձգման աղբյուրների քարտեզը (և որտեղ փորել)

1. Ցանցը և արձանագրությունները ՝ CSA, TCP handshakes, TSA, head-of-2019 (HTTP/1։ 1), միգրանցների կորուստ, BBR/ECN։

2. Նավակը/հավասարակշռիչը 'դանդաղ health-71 k, անգնահատելի թայմաուտներ, տաք փոշիներ։

3. Հավելված 'արգելափակումներ, GC/stop-the-world, սինխրոն I/O, entention։

4. Տե՛ ս 'BD-ի դանդաղ հարցումները, ինդեքսների բացակայությունը, սառը էջերը։

5. Արտաքին ծառայությունները ՝ PFC/KYC, աջակողմյան API (նեղ SLA)։

6. Գծերը և ֆոնային ջոբները 'ծանրաբեռնված գողեր, չկան backpressure։

7. Քաշ/edge: Բաց թողեք քեշը, թույլ TTL-ը, անգնահատելի հաշմանդամություն։

3) Ցանցը և արձանագրությունները

3. 1 DNS/TCP/TLS

XXIII fetch/preconnae-ը առջևում, որը երկար է IP-ը PSA-ին։

Keep-Alive/connational pooling հաճախորդների մեջ; սերվերի վրա միաձուլեք միացությունները։

TFC: resumption/Session Tickets, ժամանակակից ծածկագրերի փաթեթը; խուսափեք 0-RTT-ից անապահով գաղափարական վիրահատությունների համար։

TCP: Անջատեք Nagle («TCP _ NODELAY») չաթերի/փոքր շարժիչների համար։ tune 'initial dive', միացրեք BBR-ը որտեղ տեղին է։

3. 2 HTTP/2 и HTTP/3

HTTP/2 'բազմապատկումը նվազեցնում է HOL-արգելափակումը HTTP/1։ 1; հետևեք հոսքերի գերակայություններին։

HTTP/3/QUIC: Ցածր ազդեցություն 2019/RTT; օգտակար է բջջային/միջազգային ցանցին։

Header compression: HPACK/QPACK, բայց պահպանեք վերնագրերի խելացի չափը։

3. 3 Հավասարակշռություն/ռոտինգ

Delality-a.ru (գոտիություն), EWMA/least-request դեմ «տաք» instans։

Նստաշրջանների կպչելը միայն այն դեպքում, եթե կա state; հակառակ դեպքում, stateless + ընդհանուր քաշ/նստաշրջան։

4) Մոսկվան, օգտակար պաշտպանությունը, ագրեսիան

Սեղմեք 'Brotli (տեքստ), Gzip որպես fallback; երկուական կոմպոզիցիաներ ՝ Systobuf/Avro gRPC/ներքին API համար։

Նվազեցրեք payload: Ընտրովի դաշտերը («fields =...»), պագինացիա, պայմանական GET (ETag/If-None-Match), delta-պատասխանները։

GraphQL: persisted queries, «ճարպային» բեկորների արգելք, խորության և բարդությունների սահմաններ։

Խուսափեք N + 1 'ջոյնից/պրեսպոզիզացիայից, բատչ-էնդպոինտներից ագրեգատների համար։

5) Թայմաուտներ, ռեթրա, կուռքեր

Թայմաուտները շղթայի վրա 'հաճախորդ <դարպաս <պահեստ/արտաքին մարտահրավեր։

Retrai backoff + jitter-ից, միայն ռուսական սխալների համար։ տեղադրեք budgets գետերի վրա։

Idempotention: որոնման բանալին/հոսքը + արդյունքի պահպանումը։ ծախսերը չպետք է կրկնօրինակեն վիրահատությունները (հատկապես ֆինանսները)։

Circuit Breaker: Բացեք քայքայման ժամանակ։ hedged/backup reques.ru «պոչերի» համար (ուղարկել կրկնօրինակը P95 միջոցով)։

6) Հերթեր, ասինխրոն և backpressure

Մի արգելափակեք սինխրոն ճանապարհը 'ծանր վիրահատություններ (KYC սկաններ, հաշվետվություններ) - ֆոնի մեջ։

Backpressure: Սահմանափակեք հերթից սպառումը, գրեք զուգահեռ։

Batching/coalescing: Համախմբեք փոքր վիրահատությունները (օրինակ, հավասարակշռությունների նորարարությունը համախմբման հետ)։

Medibox/Inbox-ը 'իրադարձությունների երաշխավորված առաքումը հեռացման ժամանակ։

7) Ծրագիր 'ռանտայմեր և փամփուշտներ

Պուլները կապված են BD/kasham/NTTR-ի հետ։ սահմանափակեք դրանք, որպեսզի չփորձեք «խեղդել» backend.

JVM 'ավելացրեք GC (G1/ZGC), խուսափեք մեծ ալոկացիաներից, .NET - ThreadPool/async; Node. js - մի արգելափակեք event loop, վերցրեք CPU ծանր։

Python: asinhron վարորդներ (asyncpg/httpx), uvloop; CPU առաջադրանքները worker-pool-ի միջոցով։

Warm-up: տաքացրեք JIT/kashi, «warm poope» instans պիկի համար։

8) Տվյալների և քեշի հիմքերը

Ինդեքսները և պլանները 'ստացիոնար' MSAIN ", auto-վակուում/վերլուծություն, սկանների սահմանափակում։

Connational pooling (PgBouncer/Multiplexing), կարճ գործարքներ։

Քեշի ռազմավարությունը 'read-through, write-through/write-behind; TTL + հաշմանդամություն իրադարձությունների համար։

Շարդինգը/կրկնօրինակները 'սլեյվներից կարդալը, «տաք բանալիները» տեղական քեշներ են (near-cache)։

9) Քեշինգը և edge

CDN/edge ստատիկի/սուլֆերի համար, API պատասխանների քեշը (եթե ապահով) «Cache-Corl», «ETag»։

Stale-while-revalidate և stale-if-error-ի համար UX-կայունության համար։

Geo-բաշխումը 'ամենամոտ ROR/տարածաշրջանը նվազեցնում է RTT-ը։

10) Ճարտարապետական փամփուշտները P99 պոչերի դեմ

Hedged reques.ru: կրկնօրինակեք դանդաղ հարցումը մեկ այլ ինստանսի մասին շեմից հետո։

Request collapsing: Մեկ «առաջնորդող» հարցումը BD-ի համար, մնացածը սպասում են արդյունքին (խուսափում է փոթորիկներից)։

Prioritization: VIP/քննադատական վիրահատություններ 'ընտրված փամփուշտը/գերակայությունը։

Graceful degradation: Կտրեք երկրորդական դաշտերը/վիջետետետները բեռնելիս։

11) Գեորգի (մոտավորապես)

11. 1 NGINX (թայմաուտներ/ագրեսիա)

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 (հաճախորդ)

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: Չափեք ճիշտ

RED/USE metrics + OTel: «trace _ id» - ը նավի ծառայության-BD-արտաքին API-ի միջոցով։

Առանձին կոմպոզիցիաներ ՝ «api _ version», «region», «partner», «endpoint»։

Dashbords: P50/P95/P99, queue Time, error mix, retry rate, cache hit։

Pronthet.ru-ից/ASN (TR/MS/EU) և կրիտիկական ճանապարհներով (reg, payout)։

SLO-ի օրինակ

SYAPI: «P95 24250.ru», «P99 24500.ru» (30 օր)

PMS webhook մշակումը '«P99 2460s» գետերով

Freshness 2019: «P95 lag no. 30s»

13) FinOps и latency

Միլիոնավոր մարդիկ արժե գումար, գնահատեք դոլար/մզ շահույթը CR/ARPPU-ում։

Right-sizing: ավելի արագ, քան միշտ։ գրագետ քեշը/կոմպոզիցիան ավելի էժան և արագացնում են։

Egress/edge: CDN-ը նվազեցնում է RTT-ը և տարածաշրջանի ելքային մրցույթի արժեքը։

14) Չեկի օպտիմիզացման թերթիկը (գոմո)

1. Տեղադրեք SLO-ը և չափեք պոչերը (P95/P99) էնդպոինթամների/տարածաշրջանների վրա։

2. Միացրեք HTTP/2/3, TMS resumption, երկար կապեր։

3. Այրեք և կորցրեք պատասխանները ՝ Brotli/Gzip, դաշտեր, պահանջով, պագինացիա, ETag։

4. Տայմաուտներ/ռետրաններ/բրեյքերներ։ ավելացրեք կուռքերը։

5. Քաշ/edge: hit-rate և ճիշտ TTL; stale ռեժիմներ։

6. ԲԴ ՝ ինդեքսներ, պլաններ, փամփուշտներ, կրկնօրինակներ։ վերացրեք N + 1։

7. Ասինհրոնդը ծանր է 'հերթեր, բատչինգ, backpressure։

8. Hedge/collapse/priority քննադատական ճանապարհների համար։

9. Warm-up-ը և նախատիպային սկեյլինգը գագաթներին (Records/խաղեր)։

10. Սինթետիկ և ալերտներ P99 և queue Time-ում։ մեջբերում է փերֆ ռևին։

15) Anti-patterna

Մեկ գլոբալ թայմաուտը «ամեն ինչի վրա» և անվերահսկելի ռետրան (DDOS ինքն իրեն)։

Առանց անհրաժեշտության, նստաշրջանները կպչուն են։

Մեծ JSON-ը առանց դաշտային ֆիլտրերի։

Դանդաղ արտաքին API-ի համաժամանակյա մարտահրավերները «տաք ճանապարհին»։

Ինդեքսների/լիմիթների բացակայությունը BD-ում; N + 1 ORM-ում։

Ոչ քեշա/edge և ETag; մշտական լիակատար պատասխաններ։

Բիզնես և տեխնոլոգիական սխալները մեկ «վերականգնվող» զամբյուղում։

16) iGaming/fintech համատեքստը 'գործնական նոտաներ

Ռեգը (CR) 'երթուղիների գերակայությունը, առանձին փամփուշտը, «P99 24500.1»; դեգրադացիա - անջատել UI-ի «զարդերը»։

PMS-2019 'Concarency-ի լիմիթներ, ռետրեր ժամանակավոր կոդերով, warm-connects, տարածաշրջանային egress-IP։

VIP վիրահատությունները 'երաշխավորված փամփուշտը/գերակայությունը, շրջանցելով ընդհանուր հերթերը։

Aleksra/ivents: նախատիպային սկեյլ, տաքացնելով քեշը, www.fetch։

Հաշվետվությունները ՝ async և SLA freshness-ում, չեն արգելափակում prod ճանապարհը։

Արդյունքը

Latency-ի օպտիմիզացումը հավասարակշռության կարգապահությունն է 'ցանցը (HTTP/2/3, TSA), արձանագրությունները և քեշը, թայմաուտները/ռետաները' idempotenty, BD/kashi, asinhron paternes և P95/P99 դիտարկումը։ Կենտրոնանալով պոչի վրա և վերացնելով «նեղ դողերը», դուք կայունացնում եք արձագանքը, բարելավում ծրարը և նվազեցնում միլիոնավոր սեկունդների արժեքը, որտեղ դա իսկապես ազդում է բիզնեսի վրա։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։