Logo GH

Վիրահատությունները և Կառավարումը կատարվում են վիրահատական ենթակառուցվածքի մասշտաբով

Վիրահատական ենթակառուցվածքի մեծացումը

1) Ինչու՞ և ի՞ նչ կարելի է համարել «մեծացում»

Մեծացումը պլատֆորմի համակարգային կարողությունն է մեծացնել (RPS/TPS, կոնեկտներ, IOPS, throughput) և տվյալների ծավալը առանց SLO-ի կորստի և վերահսկվող արժեքի։ IGaming/fintech-ի համար դա ուղղակի փողի մասին է 'դեպոզիտների փոխակերպում/108, խաղային խաղեր և հաշվարկներ։

Նպատակները

Պահել SLO-ը բեռի X-կարճ աճի և սեզոնային գագաթների ժամանակ։

Ապահովել կանխատեսելի մեծացման ժամանակը (minutes, www.t hours)։

Պահպանել տնտեսությունը 'cost/RPS, cost/գործարք, cost/1k իրադարձություններ։

2) Լայնացված պլատֆորմի սկզբունքները

1. Հորիզոնական ալ-նախ 'բաժանումը փոքր, ստալեսսի ծառայություններին։ վիճակը տվյալների կլաստերում է։

2. Back-pressure-ը և հերթերը 'արագությունը հարթելը, պաշտպանությունը փոթորիկներից։

3. Բոլոր շերտերում 'client/edge/ծառայություն/BD։

4. Idempotention-ը և կրկնությունը 'անվտանգ retray, www.box, dedup։

5. Կախված սահմանափակումներից 'թայմաուտներ, բրեյքերներ, bulkhead-մեկուսացում, rate-limits։

6. Դիտարկումը տարաների ազդանշանների վրա 'headrome, p95/p99, lag, connects, քվոտաներ։

7. HPA/MSA/Cluster Autoscaler + stop պայմաններ։

8. Multi-region by design: Անկախ բլոկային գոտիները, տեղական տվյալները, կայուն կեղծարարները։

3) Capacity planning: Ինչպես «հաշվել, թե որքան պետք է»։

Մոդելի մուտքերը ՝ wwww.PS, wwww.D. (ժամ), «կրիտիկական ճանապարհներ», քեշի հիթերի գործակիցներ, միջին payload 'a, SLO և պրովայդերների լիմիտներ։

Արագ գնահատականներ (rule-of-thumb)

RPS wwww.CPU/pods: «pods = RPS p99 _ Time/արդյունավետ _ CPU _ _ ենթա» (30-50% պահեստով)։

Հերթերը '"նվազագույն _ արագություն _ հյուպատոսարան medical _ արագություն _ արտադրողների 1։ 2`.
DB կոննեկտներ ՝ "max _ conns = ակտիվ _ pula _ ծառայություններ միջին _ pool _ size 1։ 3`.

Քաշ 'չափսը = «տաք working-2019 N րոպեում» + 20-30 տոկոսը։

Egress/CDN: egress = հարցումների պիկ միջին պատասխանը (հաշվի առնելով ագրեսիան)։

Headro.ru: Նպատակը 20-40 տոկոսը պիկի վրա (շերտերով)։ 15 տոկոսից ցածր է «capacity uplift»։

4) Մասշտաբի շերտերը և փամփուշտները

4. 1 Edge / CDN / WAF

Քաշումը եզրին (TTL + SWR), գեո հավասարակշռությունը, սեղմումը, HTTP/2/3։

Rate-limits-ը IP/JWT/բանալին պարագծի վրա, պաշտպանություն։

Ֆան-աութ իրադարձությունները (ջեքպոտներ, նախազգուշացում) բրոկերների/pub/sub ալիքների միջոցով։

4. 2 API դարպաս/Backend-for-Frontend

Հորիզոնական մասշտաբը ստատլեսի պոդների վրա, dedicated փամփուշտի վրա։

HPA-ը բիզնես-մետրիկներով 'RPS, p99, հերթը' գողթ-պուլում, ոչ միայն CPU-ում։

4. 3 Ասինխրոն գծեր/սթրիմինգ (Kafka/Rabbit/Pulsar)

Կուսակցության և կոնսումերների մասշտաբները։ խուսափել skew (բանալիներ և բաշխումներ)։

Lag-alerts + վահանակների ավելացում; DLQ-ը և retry-topics-ը։

Retention-ի տակ SLA ռեքոնսիլիայի և ռեպլեյի տակ։

4. 4 Քեշի (Redis/Memcached)

Կլաստերային ռեժիմներ, կրկնօրինակներ, eviction քաղաքականություն (LFU), multiget, pipeline։

Hot-key-ev-ի և ֆոնային խնդիրների բաժանումը, հաճախորդների սահմանները և max-memory policy-ը։

4. 5 Տվյալների հիմքեր

Read-կրկնօրինակները և ընթերցանության ռոտինգը, connational pooling-ը։

Շարդինգը տարածաշրջանի/թենանտի/միջակայքի վրա։

CQRS: Ձայնագրություններ 'վարպետության/առաջնորդի, ընթերցանության վրա' ակնարկներում։

Ինդեքսավորումը և բետա-գրողները (www.box www.stream sink)։

Արխիվացումը և տաք/սառը տվյալները (tiering)։

4. 6 Հիբրիդային/օբյեկտի ձեռնարկություններ

Ուլտրաձայնային, multipart-բեռնումը, CDN-front, ասինխրոն փոխակերպումները։

Պրովայդերի քվոտաները, պոչերի մաքրումը և egress բյուջեն։

4. 7 Պրովայդերներ (PFC/KYC/ստուդիա)

Multi-vendor-ը և kvots/SLO/արժեքը։

Circuit breaker + rate-limit յուրաքանչյուր պրովայդերի վրա, ռետրերի հերթը, «grace-ռեժիմները»։

5) Avto-մեծացումը և hard-Rails-ը

Kubernetes:
  • HPA: метрики `rps_per_pod`, `queue_depth`, `p99_latency`; `targetAverageValue`.
  • MSA 'առաջարկություններ ռեսուրսների վերաբերյալ; թարմացնել գագաթից դուրս։
  • Cluster Autoscaler: Nod-Group (spot + on-demand) գերակայություններով։
  • PodMedrupics Budget/TopologySpreadConstrainment-ը ՝ գոտիների հավասարություն։
  • LimitRange/Resourts Delta 'պաշտպանություն «հարբած» դոպլոներից։

Կեղծ մանիֆեստ HPA


apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler spec:
scaleTargetRef: {apiVersion: apps/v1, kind: Deployment, name: api-gw}
minReplicas: 8 maxReplicas: 200 metrics:
- type: Pods pods:
metric:
name: rps_per_pod target:
type: AverageValue averageValue: "120"
- type: Pods pods:
metric:
name: p99_latency_ms target:
type: AverageValue averageValue: "280"
behavior:
scaleUp:
stabilizationWindowSeconds: 90 scaleDown:
stabilizationWindowSeconds: 300

Guardrails (օրինակներ)

«Pause & Rollback», եթե կանարեյքի ժամանակ p99> 1։ 3 baseline 10 րոպե։

«Freeze scale-down» -ը 2019 թվականին, միայն scale-up։

«Stop retries» -ը «open _ circuit = 1» նեղ տեղերում։

6) Multi-region: 108/108 և 108/լոկոմոտիվ/

Blast-մեկուսացված տարածքները 'անկախ կլաստերներ, տեղական գաղտնիքներ/քվոտաներ։

Գլոբալ ռոտինգը 'latency-/geo-based, health-probes, ձեռքով override։

Տվյալները

Տաք 'տեղական + eventium կրկնօրինակումը (strimes)։

Կրիտիկական գործարքները պայմանագրով (ledger/հավասարակշռություն) են։

Failover-Pleybuks-ը 'աղբյուրի կոպիտ փոփոխությունը, TTL-ը, տաքացնելով քեշը։

Վարժությունների ստանդարտը (DR) 'եռամսյակային դասընթացներ RTO/RPO նպատակներով։

7) Ցանցային և ծառայողական արտոնագրեր

Mesh: mTSA, retry/breaker, www.ier det.ru, limita-dunstrim։

EBPF/Observability-ում L4/L7-ում, միավորման սահմանները, պաշտպանությունը head-of-2019-ից։

Ներքին API դռները S2S-ի համար, ընդհանուր rate-limit և աուդիտ։

MSC/black-գոտիների ենթահողերը, NAT/Egress վերահսկողությունը, peering հետ։

8) Արտադրողականություն ՝ թեստեր և ապացույցներ

Load & stress-ի պրոֆիլում + worst-cast-ը։

Soak (երկար) - հիշողության/ձայնագրիչների արտահոսք, latency աճը։

Chaos/game-days 'բրոքերի/պրովայդերի/գոտու անկում, «դանդաղ պրովայդեր»։

Պերֆի ռեգրեսիա CI-ում 'ստանդարտ խաղերի և ավտոմատ խաղերի մի շարք։

Մինի-մատրիցա։

ՍցենարըՆպատակըՇեմն
Deposit TPS ×2Վճարումների պիկp99 35350 ms, SR 3599։ 5%
Jackpot BroadcastՖան-աութWS connects 2490 տոկոսը լիմիտի, առանց drops
KYC SlowdownԱրտաքին պրովայդերԱվտոհեռարձակումը + feilover 242 րոպե

9) Տվյալները և ձեռնարկությունները 'աճի ռազմավարությունները

Ուղղահայաց աճը մինչև «առաստաղը» հորիզոնական/շարդինգ է։

Կարդացեք կրկնօրինակները/քեշը; Batch/asinhron/ամսագիր։

Հիմնական սխեմաները ՝ expand www.migrate www.ract, առանց գլոբալ արգելափակումների։

Արխիվացում 'սառը կուսակցություններ էժան պահեստում + on-demand re-hidae։

Որոնումը 'առանձին ինդեքսներ (OpenSearch/Solr), որոնք ունեն բազմաբնույթ պարամետրեր։

10) պրովայդերների և քվոտաների կառավարումը

Քվոտի քարտեզը (TPS, պատուհաններ, արժեքը); Ալբերտ 'usage _ ratio> 0։ 9`.

Ռոտինգը արժեքով/որակով (smart routing)։

OLA-ի համաձայնությունները SLO-ն են և քվոտաների ավելացման գործընթացը։

Այլընտրանքների փամփուշտը և «տաք» փոխակերպումը։

11) Չափման և մեծացման ազդանշաններ

Մետրիկները (նվազագույն)

Capacity headroom по слоям; `queue_lag/backlog growth`; `kafka ISR`; `db connections`/`repl lag`; `redis evictions`; `open_circuit`/`retry_rate`; `quota_usage`.

Բիզնես մետր 'success rate/դեպոզիտի փոխարկումը, խաղի մեկնարկի ժամանակը։

Արժեքը ՝ cost/RPS, cost/1k calls։

Դաշբորդները

Capacity Overview (headrope, ամենաբարձր ռիսկերը, burn-rate SLO)։

Stream & Queue Panel (lag/backlog, consumer saturation).

DB & Cache (p99, կոնեկտներ, hit/evictions)։

Providers & Prodtas (TPS, timeouts, արժեքը, ռուսական)։

Change Safety (մինչև/թողարկումից հետո, կանարեյկան, ավտոմեքենաները)։

Ալերտա (գաղափարներ)


ALERT HeadroomLowAPI
IF capacity_headroom{layer="api"} < 0. 15 FOR 10m

ALERT KafkaBacklogAtRisk
IF (consumer_lag > 5e6 AND rate(consumer_lag[5m]) > 5e4) AND (hpa_desired == hpa_max) FOR 10m

ALERT DBConnectionsNearMax
IF active_conns / max_conns > 0. 85 FOR 5m

ALERT ProviderQuota90
IF usage_quota_ratio > 0. 9 FOR 5m

12) FinOps 'մեծացնել շահավետ

Արդյունավետության գործակիցները 'cost/RPS, cost/դեպոզիտ, cost/1k իրադարձություններ։

Right-sizing: SNA/առաջարկություններ, «over-provisioned» զեկույցներ։

Spot/Winemptible-ը քննադատական չէ։ Reserved/Committed-ը ռուսական բեռի համար։

Egress բյուջեն և քեշինգը, CDN/edge ofload-ը։

Լոգարանների հավաքումը և արխիվացումը արժեքային մակարդակում (hot vs cold)։

Նախազգուշացման քվոտաները (soft-cap) և Auto-ticets-ը ընդլայնելու համար։

13) Գործընթացներ և մարդիկ

Change Live 'kanareks, ficheflagy, կանգառներ ռեգրեսիայի ժամանակ։

Պատահականության պատրաստակամությունը 'runbook "և" որտեղ ավելացնել հզորությունը "," ինչպես փոխել տարածքը "։

Պիկի պլանավորումը '2019/կիսագնդերի/քարոզարշավների օրացույցը և պրովայդերների պատուհանները։

Disgame-days և DR ուսուցումները։

Սեփականատիրոջ մատրիցը 'ով կարող է «կոճակ ապրել» ֆեյլովերի վրա/քվոտաների ավելացում։

14) Ներդրման թերթերը

Հաճախականության գործարկումը (2-4 շաբաթ)

  • Կրիտիկական ճանապարհների և սահմանների քարտեզը (շերտերով), headrope նպատակը 30 տոկոսն է։
  • HPA բիզնես չափումների + Cluster Autoscaler; PDB/SpreadConstraints.
  • Հերթերը տաք ճանապարհների վրա, idempotency-keys, www.box։
  • Քեշի 'hit նպատակները 90%, evictions քաղաքականությունը, հիմնական ինդեքսները։
  • DB: read կրկնօրինակներ, ձիերի փամփուշտներ, շարդինգի պլան։
  • Պրովայդերներ 'մուլտֆիլմ-վենդոր, քվոտաներ, բրեյքերներ/ռեփեր։
  • Dashbords «Capacity/Stream/DB/Providers», Alerts թիվ 11-ից։
  • Կանարեյկան և ավտոմեքենաները «մինչև/հետո»։
  • DR-pleybuk և մեկ մասնակի ֆեյլովեր դասընթացը։

Մեծ պիկի առջև

  • Տաքացնելով քեշը, HPA/ASG, warm-standby կրկնօրինակը։
  • Պրովայդերների քվոտի բարձրացումը, ռուսական smart-routing։
  • Dinight-mode ճնշումները ոչ ռիթմիկ ալերտների համար։
  • Ֆիչեֆլագ «safe mode» պատրաստ է ակնթարթային ներառման համար։

15) Anti-patterna

Ուղղահայաց ապգրեյդը «մինչև հիմքը» հորիզոնական փոխարեն։

Հոսքերի/շարժիչների ընդհանուր փամփուշտը բոլոր դաունստրիմների վրա (head-of-2019)։

Ռետրոյը նեղ վայրերի թայմաուտներում է, ջիտերի բացակայությունը փոթորիկ է։

Ոչ մի հիստերեզիա ալերտներում և scale-քաղաքական գործիչներում «փակցնում» է։

Միասնական գլոբալ ԲԴ-ն առանց շարդինգի և տվյալների բազայի։

Կույր հավատը KPK վենդորի վրա առանց թայմաուտների/ռետրերի/դիտարկման վերահսկման։

DR ուսուցումների բացակայությունը 'ֆեյլովերը «միայն թղթի վրա»։

16) KPI մասշտաբը

SLO պահպանումը պիկի վրա (p95/p99, success rate)։

Headro.ru-ի շերտերը 104-ին։

MTSA (Mean Time To Scale) - մինչև ավելացված ռեսուրսների հայտնվելը։

Backlog/Lag Resolution Time-ը գագաթից հետո հերթերի հավաքման ժամանակն է։

Change Failure Rate-ը ակտիվ աճի ժամանակահատվածում։

Cost/RPS և խնայողություններ քեշից/CDN/edge ofload-ից։

DR Readiness: RTO/RPO վարժություններում։

17) «արագ» ձևանմուշների օրինակներ

Kafka 'վահանակների խմբաքանակ և ավտո սկեյլ (գաղափարներ)


partitions(topic="bets") = ceil(peak_msgs_per_sec / target_msgs_per_partition)
consumers = min(partitions, max_pods); rebalance_on: skew > 1. 5x scale_up_if: lag > 5e5 && rate(lag[5m]) > 5e4
PostgreSQL:

max_connections = poolers pool_size 1. 3 read_routing: primary (write), replicas (read majority)
shard_key: tenant_id or region_id
Redis:

maxmemory-policy: allkeys-lfu cluster-replicas: 1 evict-alert: rate(evictions[5m]) > 0 && used_mem/limit > 0. 8

Կանարեյի ավտոգեյթի քաղաքականությունը (դավադրություն)


guardrails:
- metric: api_p99_ms, threshold: 1. 3 baseline_1d, window: 10m, action: pause_and_rollback
- metric: error_rate, threshold: 2 baseline_1d, window: 5m, action: pause max_step: 10%
step_interval: 15m

18) FAQ

Q 'Ի՞ նչ մեծացնել առաջինը։

A: Նեղ տեղեր ըստ dashbords 'հերթեր/kashi/BD կարդալու։ Տաք ճանապարհները (դեպոզիտ/տոկոսադրույք/խաղի մեկնարկը) առաջնահերթություն են։

Q 'Ինչպե՞ ս կարող եք հասկանալ, որ մեքենայի մասշտաբը «ավելի վատ է դարձնում»։

Նայեք հարաբերակցությանը 'scale-up/, իսկ r99/սխալները չեն բարելավվում, միգուցե դուք «մեծացնում եք խնդիրը» (նեղ dunstrim/քվոտա)։ Միացրեք բրեյքերները/դեգրադացիան։

Q 'Արդյո՞ ք երկրորդ պրովայդերը միշտ կարիք ունի։

Ա 'Քննադատական ճանապարհների համար այո։ Հակառակ դեպքում գոնե «safe mode» -ը պարզեցված սցենարի և քեշի հետ։

Q: Active-active или active-passive?

A: Եթե RTO պահանջները ցածր են և շատ տարածաշրջանային խաղացողներ 'active-action։ Հակառակ դեպքում սկսեք active-passive-ից պատրաստված ֆեյլերի հետ։

Contact

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

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

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

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

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

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