GH GambleHub

Ցածր ուշացման ճարտարապետությունը

Ինչու՞ պետք է ցածր ձգձգման ճարտարապետություն

Ցածր ձգումը ոչ միայն «արագ միջին» է, այլ կայուն պոչերը (p95/p99) իրական բեռի ժամանակ։ Դրա ճանապարհը ձգձգման բյուջե է, հերթերի/հետքերի կարգապահություն, տվյալների և քեշի մոտ, ճիշտ արձանագրություններ/կոննեկտներ և խիստ գործողություն (սահմաններ, դիտարկումներ, դեգրադացիա)։

Նպատակներ և հետաձգման բյուջե

1. NO SLO: "p95-120 ms, p99-250 Ms, սխալ 240։ 3%».

2. Հավաքեք բյուջեն ՝ հաճախորդը wwww.edge www.orld wwwww.eeedge wwww.r

3. Բաժանեք սահմանները (օրինակ, ընդհանուր SLO 120 ms p95)

Հաճախորդ-edge: 15 մզ

Edge շրջան: 15 մզ

Gateway/L7: 10 Ms

Բիզնես ծառայություն ՝ 40 մզ

Պահեստ/քաշ: 25 մզ

Արգելոց/ջիտթեր ՝ 15 մզ

💡 Յուրաքանչյուր բաղադրիչ պարտավոր է ունենալ թայմաուտներ և քայքայման պլան, եթե չի տեղավորվում իր բյուջեում։

Մետրեր և պոչեր

Merite p50/p90/p95/p99, միջով և յուրաքանչյուր հոփում։

Կոտրեք պիտակները 'տարածաշրջանը, մեթոդը, հաճախորդի տարբերակը, ցանցի տեսակը (www.il/brodbend), payload չափսը։

Տարբերեք հերթի ժամանակը և կատարման ժամանակը (տե՛ ս Little's Lox: L = www.W)։

Tail-զգայուն տեխնոլոգիաներ ՝ hedged reques.ru (հազվադեպ պաշտպանությամբ), կասկադային գետերի արգելքը։

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

QUIC/HTTP/3: ավելի քիչ շարժական/ռոումինգի վրա, բազմապատկումը առանց head-of-2019։

TLS 1. 3 և 0-RTT (միայն անվտանգ idempotent հարցումների համար)։

CSA: կարճ TTL-ը դինամիկ երթուղիների համար, Anycast-ը POP-ի համար։

TCP: «TCP _ NODELAY» (), ավելորդ «Nagle »/« Diayed ACK» անջատումը, որտեղ արդարացված է։ keep-alive և արագ վերականգնումը։

GRPC/HTP/2 'մուլտիպլեքս, flow-winl և wwww.ru պատուհաններ; խուսափեք ավելորդ հակումից փոքր payload-ում։

Միացություններ և փամփուշտներ

Բաժանեք փամփուշտները պարամետրերով/նպատակներով (որպեսզի «դանդաղ հարևանները» չհանեն արցունքները)։

Warm-up/Keep-alive: աջակցեք տաք ձիերի կայուն քանակը։

Connection coalescing (HTTP/2/3) и reuse.

Թայմ-աուտներ '«connational», «TMS handshake», «request», «idle»։ Տարբեր արժեքներ տարբեր հոփերի վրա։

Տվյալների և հաշվարկների տեղայնությունը

Edge/տարածք 'կարդացեք և թեթև հաշվարկներ ավելի մոտ օգտագործողին (տե՛ ս «Edge-2019 և հիբրիդային տրամաբանությունը»)։

Read-ental/Write-global-ը 'կարդալու, համաշխարհային ճշմարտությունը ձայնագրելու համար։

Քաշ-հիերարխիա ՝ CDN/edge-cash no. KV/Redis-ը ռուսական ծառայողական քեշը տեղական in-proc է։

Progrev (warming) 'տաք շարժիչների բեռնումը ջեռուցման/մեծացման ժամանակ։

Stale-wile-revalidate-ը ցածր ռիսկային տվյալների համար։

Intel և ինդեքսներ

Ընտրեք O (1 )/O (logN) հասանելիության սխեմաները։ պահեք նեղ ինդեքսներ հաճախակի հարցումների համար։

Hot-keys: Շարդիրումը 'hash (id) "կամ ավելացրեք" աղ "հավասարության համար։

Batching-ը դուրս է գալիս BD/kash (մինչև խելացի չափերը) փոխարեն տասնյակ միայնակ զանգերի փոխարեն։

OLTP-ի համար հնարավորինս կարճ գործարքներ են։ read-committed/www.apshot փոխարեն սերիական բլոկների փոխարեն։

Մրցակցություն և արգելափակման մեթոդներ

Նախ վերացրեք սպասումները, ապա օպտիմիզացրեք CPU-ն։

Async I/O և անտեսող վարորդներ։ տեղադրված k-free կառուցվածքները այնտեղ, որտեղ տեղին է։

Խուսափեք գլոբալ մյուտեքսներից։ granular-loks, CAS/տարբերակումը։

Հոսքի փամփուշտները 'չափսերը գրանցեք, որպեսզի չընկնեք ենթատեքստում։

NUMA-գիտակցությունը 'հոսքերի կապումը գանձերին, տեղական ալոկատորներին։

JVM/GC և rantaim-tuning (եթե կիրառելի է)

Կոդի և ալլոզիայի արտադրությունը 'ավելի քիչ տեխնոլոգիական էֆեկտներ, քան GC դադարը։

Ժամանակակից կոլեկցիոներները (G1/ZGC/Shenandoah) բուժական սարդերով։ escapes և 105 օրինագծեր։

Class/Winsharing, JIT warming, AOT/native-image-ի համար կախված գործառույթների համար։

Գիստոգրամները GC-ի դադարը ներառեք հետաձգման ընդհանուր բյուջեում։

Հերթեր, backpressure, պաշտպանություն պերեստրոյից

Հերթերի չափը = փոքր է, երկար գծերը տալիս են «գեղեցիկ p50» և սպանում են p99։

Ակնհայտ backpressure: Պատասխանեք «դանդաղ», քան պատճենեք։

Adaptive concurrency: նվազեցրեք զուգահեռ սխալների/լատենտության աճի ժամանակ (VEGAS/gradient ալգորիթմներ, AIMD)։

Circuit breaker: Արագ ձախողումներ, երբ ապստրիման քայքայվում է, bulkhead (kaut-ընկերություններ) փամփուշտների և ռեսուրսների վրա։

Rate limit: սահուն պատուհան/հոսանք, գերակայություն (user tier/critical-path)։

Retrai, hejing և impotenty

Retray-ը միայն տրանսցենտենտ սխալների, ջիթերի և փորձերի առավելագույնի է հասնում։

Idempotent վիրահատությունները և «Idempotency-Key» -ը պարտադիր են խոհարարների համար։

Hedged reques.ru: ուղարկեք դուբլներ շեմից հետո (օրինակ ՝ p95 + 10 մզ) և միշտ վերացրեք ավելցուկը։

Երբեք մի կտրեք յուրաքանչյուր շերտի ներսում առանց համակարգման, կստանաք փոթորիկ։

Քեշինգը և մեղքը

Տաք ճանապարհը պետք է անցնի առանց ցանցի տիպային բեռի (in-proc/LRU)։

Negative cache-ը 10-60 c-ով, որպեսզի չվնասի բացակայող բանալիները։

Զանգվածային տաքացումը դելֆում/սկեյլինգում 'տաք կոդերի ցուցակները, read-ahead, background refresh։

Դեգրադացիա և ֆոլբեկ

Graceful Degradation: Կտրեք երկրորդական ֆիտները լատենտության աճի ժամանակ (ավելի քիչ մանրամասն պատասխանը, հարստության անջատումը)։

Softimeouts: Վերադարձեք հիմնական պատասխանը/քեշը 5xx-ի փոխարեն։

Fail-open/Fail-closed-ը ակնհայտ է յուրաքանչյուր զանգի համար։

Դիտարկումը և ավելացումը

Բաշխիչ թրեյսինգը 'քնել յուրաքանչյուր հոփում, պոչի սեմպլինգ (tail-based)։

RED/USE метрики: Rate, Errors, Duration / Utilization, Saturation, Errors.

Top-N «դանդաղ» երթուղիներ ամեն օր։

Ավելացողները (alloc/cpu/www.k) վաճառում են ցածր ոչխարների (eBPF/async-profiler/Flight Recorder)։

Սինթեզիկան տարբեր ASN/ցանցերից և բջջային ալիքներից։

Արտադրողականության փորձարկումը

Latency-SLO թեստերը (p95/p99) իրական payload և փոփոխականության հետ։

Chaos-սցենարները 'RF-ի դեգրադացիան, ռուսական շարժիչների աճը, TFC-ի ուշացումը, «դանդաղ» սթորը։

Cold-start/scale-up: սառեցրեք առաջին րոպեները, երբ քեշերը դատարկ են։

Բեռի փամփուշտները բաժանեք սցենարներով (մի խառնեք read/write թեստերը)։

Մինի ձևանմուշ

Թայմաուտների/ռետրերի քաղաքականությունը (կեղծ)

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

Pula և bulkhead 'a

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

Պատասխանը քայքայման հետ

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

Օգտագործման քեյս

IGaming/ֆինանսներ 'հեղինակային իրավունքի պաշտպանություն <200 ms p95, limits/հավասարակշռություն - կարդալ տարածաշրջանային նախագծերից, ձայնագրությունները' idempotent տարբերակով։

Մարքեթինգ/առաջարկություն ՝ պատասխաններ <100 ms p95, edge-ի վրա գտնվող դրոշներ, մոդելներ, նախնական սկորինգ + արագ կանոններ տաք ճանապարհի վրա։

Բջջային հաճախորդները ՝ HTTP/3, ագրեսիվ reuse connects, կրճատված payload (Eurobuf), պաշտպանիչ թայմաուտներ և www.kash։

Anti-patternes

Երկար գծեր գողերի առջև '«գեղեցիկ միջին» և սպանված p99։

Կասկադային ռետրերը յուրաքանչյուր շերտի վրա առանց համակարգման։

Համաշխարհային «մեգա-քեշը» առանց հաշմանդամության և մեղքի։

Պարզ թայմաուտները (ամենուր «լռելյայն») անվերահսկելի պոչեր են։

Կոննեկտների մեկ ընդհանուր փամփուշտը ամբողջ ոճի համար 'head-of-international արգելափակման համար։

Ծանր տրամաբանությունը edge-ի վրա ստատեֆուլ էֆեկտներով։

Պոչի անջատված հեռաչափը դուք չեք տեսնում p99։

Chek-Lister վաճառվել է

  • Կա հետաձգման բյուջե և դրա տակ գտնվող թայմաուտները։
  • Ներառված են HTTP/2/3, TMS 1։ 3, ձիերի փամփուշտներ և warm-up։
  • Քեշի հիերարխիա, տաք տարածքների և ռազմավարության ցուցակ։
  • Read-ental/Write-global-ը և տաք շարժիչների շարդինգը։
  • Ակնհայտ backpressure, փոքրիկ գծեր, circuit-breakers և bulkhead 'a.
  • Retray-ը ջիթերի, գաղափարախոսության, սահմանափակված հեդինգի հետ։
  • Թրեյսինգը տարածաշրջանի պիտակներով/տարբերակով/հաճախորդի; 24p95/p99։
  • Perf-թեստերը սինթեզիկայով ASN/entaila, cold-start և chaos սցենարներ։
  • Քայքայման և ֆոլբեկների ընթացակարգերը մեկնաբանվում են։
  • p95/p99 համապատասխանում է SLO իրական բեռի վրա։

FAQ

Ինչո՞ ւ է p99-ը ավելի կարևոր, քան միջին։

Որովհետև օգտագործողները հանդիպում են պոչերի հետ, ոչ թե միջին։ p99-ը ցույց է տալիս, թե որքան է իրականում հիվանդանում "։

Պե՞ տք է ներառել հեդինգը ամենուր։

Ոչ։ Այն օգտակար է հազվագյուտ պոչերի համար կրիտիկական ճանապարհներում և միայն խիստ լիմիտներում/կուռքում։

Ինչպե՞ ս նվազեցնել սառը մեկնարկը։

Տաքացնելով քեշը/108, նախնական հավաքածուը/JIT-progreve, lazy-նախաձեռնությունների նվազագույնի, warm-puls։

Կարո՞ ղ եք «հաղթել ցանցը»։

Մասամբ ՝ HTTP/3, edge-POP, Anycript, կոմպակտ payload, connational reuse և խելացի թայմաուտներ։

Արդյունքը

Ցածր ձգձգման ճարտարապետությունը պայմանագրերի և կարգապահության համակարգն է 'հետաձգման բյուջեն, տվյալների հարևանությունը, փոքր գծերը, կանխատեսելի ռետրերը, քեշի հիերարխիան, ճիշտ արձանագրությունները և պոչերի անողոք դիտարկումը։ Այս սկզբունքներին հետևելով ՝ դուք պահում եք p95/p99 'առանց կայունության զոհվածների և դրամապանակի։

Contact

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

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

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

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

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

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