Մասսայականացում և կայունություն. Ինչպե՞ ս է հաղթահարվում պլատֆորմը

Ներդրումը

Առցանց կազինոն աշխատում են անկանխատեսելի խնջույքների տակ 'ֆլեշ-ռուդներ, մրցույթներ, մարքեթինգային ակցիաներ և բարձր գործունեության ժամանակահատվածներ։ Կայունության հիմքում ընկած է պլատֆորմի կարողությունը արագ բարձրացնել ռեսուրսները, հավասարապես տարածել հարցումները և պահպանել տվյալների համաձայն։ Ներքևում 'ճարտարապետության, գործընթացների և գործիքների հիմնական տարրերի շրջադարձային վերլուծություն, որը երաշխավորում է մասշտաբը և անկայունությունը։

1. Մեծացման մոդելներ

1. Ուղղահայաց (scale-up)

CPU, հիշողության, I/O ավելացումը գոյություն ունեցող մրցույթների կամ վիրտուալ մեքենաների վրա։
Այն կիրառելի է մոնոլիտ բաղադրիչների համար, որտեղ կրիտիկական է ցածր սեթը։
Սահմանափակված է մեքենայի ֆիզիկական ռեսուրսներով և պահանջում է ծառայությունների վերականգնումը։

2. Հորիզոնական (scale-out)

Նոր դիմումների կամ բեռնարկղերի ավելացում։
Հարմար է stateless-միկրովայրկյանների համար 'API շերտեր, լոբբի, MedicSocket սերվերներ։
Ապահովվում է հարցումների հավասարակշռող և ավտոսկերիչ։

2. Բեռի հավասարակշռությունը

HTTP(S) и WebSocket

NGINX/HAProxy/L4 հավասարակշռիչները ցանցի սահմանին պահում են ինստանսի փամփուշտը։
Sticky sessions You Socket-2019-ի համար, նստաշրջանը կապված է կոնկրետ հանգույցի հետ։

DNS-round-robin и Anycast

Խաղացողների բաշխումը մոտակա ամսաթվով կենտրոնում։
Ցածր TTL-ի տեղադրումը RF-ձայնագրությունների վրա 'շարժիչների ճկունության համար։

API-Gateway

AWS API Gateway, Kong, Tyk 'մեկ մուտքի կետ, rate-limiting, GET հարցումների քեշինգը։

3. Ավտոսկեյլինգը և նվագախումբը

Kubernetes HPA/VPA

Horizontal Pod Autoscaler-ը CPU/memory-ում կամ օգտագործողի մետրերում (qps, հաղորդագրությունների հերթը)։
Vertical Pod Autoscaler-ը ընտրում է ռեսուրսներ տարաներ առանց կրկնությունների փոփոխության։

Serverless հաշվարկներ

AWS Lambda, Azure Functions-ը մեկ առաջադրանքների համար 'webhook-վերամշակում, email-հաղորդագրություններ, թեթև ֆոնային ջոբներ։

Spot/Winemptible instans

Batch ծանրության համար 'վերլուծաբաններ, ETL, ռուսական։ Նվազեցնում են ծախսերը առանց ազդեցության real-Time ծառայությունների վրա։

4. Cashing եւ արագացնել պատասխանները

Edge-keshing (CDN)

Ստատիկա, API պատասխաններ, որոնք քիչ զգայունություն ունեն արդիականության նկատմամբ (խաղերի ցանկը, պրոմո-բանները)։
Բաշխված քեշ (Redis/Memcached)

Նստաշրջանները, խաղացողների պրոֆիլները, վերջերս քեշի արդյունքները TTL-ի հետ։
Client-side kash

Service Worker и IndexedDB для PWA; տեղական պահեստավորում հաճախ պահանջվող տվյալներ։

5. Հերթեր և ասինխրոն վերամշակում

Message Broker (Kafka/RabbitMQ)

Իրադարձությունների հավաքումը 'մեջքեր, վճարումներ, գործունեության լոգներ։
Asinhrone-ը downstream-ծառայությունների վրա 'վերլուծություն, ծանուցումներ, reconciliation։

Back-pressure и throttling

Հաղորդագրությունների ուղարկման արագության սահմանափակումը պիկի պահերին, որպեսզի կանխի բաժանորդների տեղափոխումը։

6. Սթրես փորձարկումը և պիկի պլանավորումը

Գործիքներ ՝ JMeter, Gatling, k6

SOcket-ի և REST հարցումների SOcket-ի սիմվոլիզները։
Load-test սցենարները

Պիկ բեռների կառուցումը իրական գործողությունների համար 'System-spin 00: 00-ին, ժամանակավոր ամրոցներով։
Chaos engineering:
  • Fultinj.ru (Simian Army, Chaos Mesh) ցանցերի, հանգույցների և BD-ի ուշացման ռեակցիաները ստուգելու համար։

7. Ստանդարտ և ալերտինգային համակարգեր

Metriki և dashbords: Prometheus + Grafana

CPU, memory, p95/p99 latency, request rate, error rate յուրաքանչյուր ծառայության համար։
Tracing: OpenTelemetry + Jaeger

Միկրոօրգանիզմների միջոցով դիմումների բաշխված ուղու միջոցով։
Լոգներ ՝ ELK/EFK կամ ամպային անալոգներ

Կենտրոնացված ագրեգացիան և լոգարանների որոնումը, անոմալիաների հայտնաբերումը։
Ալբերտ ՝ PagerDuty/Slack

Նախազգուշացումները սխալների, ուշացումների, դիտողությունների նվազեցման դեպքում նվազագույնի են հասցնում։

8. Տվյալների համաձայն բեռի տակ

Eventual consistency

Non-critical տվյալների համար (leaderboards, խաղերի վիճակագրությունը), տվյալները համընկնում են ձայնագրությունից անմիջապես հետո։

Strong consistency

Ֆինանսական գործարքների և հավասարակշռության համար. Գործարքները RDBSA-ում ACID կոդերով կամ բաշխված գործարքային կոորդինատորների միջոցով (SAGA)։

Shard- and region-aware routing

BD-ի հորիզոնական շարդինգը աշխարհագրության կամ user-id-ի հետ տեղական wwww.ter-հանգույցով գործարքների համար։

9. Ճարտարապետական արտոնագրեր

Circuit Breaker

Hysta.ru/Resilience4.ru-ը, որպեսզի պաշտպանվի կասկադի ձախողումներից, երբ կախվածությունը նվազում է։
Bulkhead

Ռեսուրսների մեկուսացումը առանձին օրինագծերի համար (խաղեր, վճարումներ, վերլուծություն)։
Sidecar и service mesh

Istio/Linkerd-ը օպտիկայի, անվտանգության և մոնիտորինգի թափանցիկ կառավարման համար։

Եզրակացություն

Կազինո պլատֆորմի հաջողակ մեծացումը ճկուն ավտոսկեյլինգի համադրություն է, մտածված բեռի հավասարակշռություն, քեշինգ, ասինխրոն գծեր և հուսալի ճարտարապետական պաթոգեններ։ Սթրեսի փորձարկումը, արտադրողականության և տվյալների համաձայն հավասարակշռության պահպանումը թույլ են տալիս դիմակայել պիկի բեռներին, ապահովել կայուն և պատասխանատու խաղային փորձը։