Ինչո՞ ւ է կարևոր մեծացնել ենթակառուցվածքը
Ինչու՞ եմ ես մեծացնում բիզնեսը
Եկամուտները առանց «առաստաղի»։ Պիկ իրադարձությունները (դերբին, ֆինալները, փղերի մեծ ֆորումները) հակիրճ բարձրացնում են RPS-ը։ Մեծացումը վերածում է աճի GGR-ի, ոչ թե 5xx-ի սխալների։
Կայուն SLO։ Մենք պահում ենք քննադատական ճանապարհների p95 լատենտ (դրույքաչափը, հավասարակշռությունը, եզրակացությունը) ռուսական շրջանակներում ցանկացած առցանց։
Արժեքը վերահսկողության տակ է։ Առաձգականություն = վճարում ենք «տաք ժամացույցի» համար, ոչ թե «անընդհատ առավելագույնը» համար։
Կարգավորող և բրենդը։ Տոմսարկղի/դրամապանակի հասանելիությունը և կանխատեսելի աշխատանքը խաղացողների ինտեգրման և վստահության առարկա է։
Մեծացման տեսակներ
Հորիզոնական (scale-out)
Մենք ավելացնում ենք ծառայությունների օրինակները։ Stateless-API-ի հիմքը, bridge-ը պրովայդերների, վեբ նավակների, գողերի համար։ Պլյուսներ ՝ անկայունություն, առաձգականություն։ Մինուսները 'անհրաժեշտ են կուռքերի և արտաքին վիճակի։
Ուղղահայաց (scale-up)
Մենք ավելացնում ենք հանգույցի ռեսուրսները։ Հարմար է BD-ի և OLAP կլաստերների համար, բայց ունի սահմանը և ավելի թանկ է աճի միավորի համար։
Երկրագրական
Multi-AZ-ը և, անհրաժեշտության դեպքում, multi-region-ը, ավելի մոտ է խաղացողին ավելի ցածր է, քան ռուսական/սթրիմների համար և ավելի շատ դիմադրություն դժբախտ պատահարների համար։
Ի՞ նչն է մեծանում կազինոյում
Էդգեն և API 'դարպասներ, WAF, GraphQL/REST, Direct Socket-հաբեր (տոկոսադրույքներ/իրադարձություններ)։
Bridge-ը պրովայդերների համար 'RNG-ի ադապտերներ HPA-ից RPS-ով և ժամանակը մինչև «bet»։ accepted`.
Դրամապանակ/դահուկորդ 'stateful-միջուկը' կարդալու, շարդինգի և գործարքների օպտիմիզացման միջոցով։- Գանձապահը 'առանձին փամփուշտներ վճարումների/ծպտյալ on/off-ramp-ի համար, կոդավորման հերթեր։
- Իրադարձությունների հերթերը/անվադողերը 'Kafka/NATS-ը համագործակցում է autoscaling consumers-ի հետ։
- Քաշ/108 և ՝ Redis/Memory-կեշինգ տաք կոմպոզիցիաների, CDN-ի համար ստատիկ ասետների համար։
- Striming: Windows RTC/LL-HMS edge Nods-ը ավտոֆոլբակի և QoS-ի ավտոմատ սկեյլի հետ։
Ինժեներական սկզբունքներ
1. Իդեմպոտենտալությունը փողի մեջ։ Ցանկացած retray 'bet։ place`/`payout. request "-ը մշակվում է հենց մեկ անգամ (idempotenty բանալին)։
2. Գծերը և backpressure-ը։ Քննադատական ճանապարհները չեն արգելափակվում, եթե պրովայդերը/BD Medlit-ը, հարցումները ընկնում են բուֆերի մեջ վերահսկվող «օրինագծով», երկրորդական ֆիչիները առաջին հերթին դեգրադացնում են։
3. Քեշը սկզբում։ Read-heavy հարցումները (հավասարակշռություն, լոբբի) - քեշի/նյութականացված ներկայացումների միջոցով։ հաշմանդամություն։
4. Շարդինգը։ Մենք կիսում ենք տվյալները/հոսքերը («playerId», երկիր, պրովայդեր, ռուսական)։
5. Կոնսիստենցիան այնտեղ, որտեղ փողը։ Խիստ ACID-ը միայն դրամապանակի/դահուկի համար։ մնացածը eventium է իրադարձությունների միջոցով։
6. Դիտարկումը մինչև փուլ։ Metriki/treiss-ը պայմանագրերի մի մասն է, հակառակ դեպքում ավտո սկեյլը «կույր» է։
Մետրիկներ և նպատակներ (SLO/SLA)
P95/p99 լատենտ
`bet. place '24150-250 ms (տարածաշրջանի ներսում), "wallet. debit/credit` ≤ 50–100 мс, `payout. quote/submit` ≤ 500–800 мс.
Սխալների մասնաբաժինը '«5xx» <0։ 1–0. 3 տոկոսը API-ի վրա, «reject _ rate» 07 <0։ 2 տոկոսը նորմալ աշխատանքի ժամանակ։
Թողունակություն ՝ RPS API/bridge; events/sec անվադողերի վրա։- Հերթերը 'սպասման երկարությունը և ժամանակը (օրինակ, վճարումը 2-5 րոպե պիկի ժամին)։
- QoS strima: dropped frames, RTT ազդանշաններ 2019, abort։
- Քաշ-հիթեր 'hit-ratio> 85-95 տոկոսը տաք բաների վրա։
- Cost/Revenue: ենթակառուցվածքի արժեքը/GGR, հարցման արժեքը (35per call)։
Աղյուսակների մեծացման արտոնագրեր
Դրամապանակ և դահուկորդ
Reader-replicas կարդալու համար; writer - մեկը գնդակի վրա։- CQRS: Գրելը (խստորեն) ընթերցանությունից (նյութականացված կտրվածքներ)։
- Batch-ը և «կառավարող» գործարքները խստորեն append-only ամսագրի միջոցով են։
Bridge/խաղային կոմպոզիցիաներ
Stateless-ադապտերները ավտոմեքենաների հետ latency of 'bet-ով։ accepted`.
Circuit breaker-ը յուրաքանչյուր պրովայդերի վրա, դեգրադացիայի ժամանակ, UI-ի ժամանակավոր քայքայումը և սեղանների անջատումը։
Վճարումներ/ծպտյալ
Առանձնացված փամփուշտը webhook "և PMS/on-chain ունկնդիրների տակ։ idempotency-ի վերամշակումը։- պրովայդերների երթուղիչը SLA/արժեքի/երկրի վրա։
Բեռի վիրահատություններ
Workers/job (բոնուսներ, առաքելություններ, մրցավարներ) - հերթերում։ մեծանում են գծերի և դեդլինների վրա։
Սթրիմինգը
Edge-puls տարածքներ, MedRTC 35LL-HMS-ի ավտոֆոլբեկ։ ուղղահայաց լիմիտներ բիթրեյթի/որակը QoS-ի պահպանման համար։
Ճարտարապետական լուծումներ
HPA/VPA/Cluster Autoscaler: HPA — на API/bridge; MSA - ETL/զեկույցների վրա; Գյուղը բազմազան շուլեր են (CPU-heavy, memory-heavy, network-optimized)։
PodMedrup.ru Budget-ը և գերակայությունները 'փողի միջուկը պաշտպանված է հեռացումից։- Feature flags-ը և kanareches-ը 'մենք ավելացնում ենք նոր ֆիչեր տոկոսների վրա։
- Geo-routing: Anycrim/RF և տարածաշրջանային ingress-դռները ավելի մոտ են օգտագործողին։
Արժեքը և արդյունավետությունը
Ռեսուրսների պրոֆիլները։ Reques.ru/limits-ը տեղադրված է և համապատասխանում է իրական ժողովին (առանց CPU-throttling կրիտիկական ճանապարհների վրա)։
Սպոտային փամփուշտները վերլուծության/ETL և ֆոնային ջոյի համար։- Թեստային/սթեյջ միջավայրերի ինքնաառաջադրումը աշխատանքային պատուհանից դուրս։
- Քեշը միջուկների փոխարեն։ Ավելի էժան է ավելացնել Redis-հիթերը, քան բազմապատկել CPU-ը BD-ում։
Անվտանգությունը մեծացման ժամանակ
MTSA/mesh-ը ծառայությունների միջև զանգերի գրաֆիկի աճի ժամանակ։- Ցանցի հատվածը (NetworkPolicy) ՝ փողի/PII-ը վստահության առանձին գոտիներ են։
- Գաղտնիքները և պատկերների ստորագրումը ավելի շատ հանգույցներ են = ավելի շատ ռիսկի վայրեր։
- Blast-radius-ի վերահսկումը 'շարդինգը և հարցումների սահմանները պաշտպանում են կասկադից։
Anti-patterns
Մեծացնել մոնոլիտը գլոբալ բլոկների հետ 'ենթակայանների աճը = հակամարտությունների աճը։- Կլաստերները հավերժ «պիկի վրա», HPA-ի փոխարեն և «երկրորդական» ֆիչի դեգրադացիան։
- Խառնել OLTP-ը և OLAP-ը մեկ BD-ում, ցանկացած զեկույց սպանում է մրցույթի հետաձգումները։
- Idempotenty-ի բացակայությունը ռելսերի ժամանակ բանավեճի դուբլներն են (հատկապես գագաթնակետին)։
- CPU-ի կույր ավտոմեքենան անտեսում է իրական մետրը (ժամանակը 'bet. place, շարքի երկարությունը)։
- Երկրի վրա վճարումների մի պրովայդեր այն չէ, երբ այն «ընկած է»։
Մասշտաբի ներդրման չեկի ցուցակ
Ռազմավարություն
- SLO (p95 լատենտ, սխալներ, RPS) և սխալների բյուջե։
- Օրինագծերի սեգմենտացիան 'գումար/տոկոսադրույք/դրամարկղ' առանձին երկրորդական ֆիգուրներից։
Տվյալները
- Շարդինգ/կրկնօրինակներ, CQRS կարդալու, նյութականացված ներկայացումների համար։
- Քեշի շերտը, որը հավասար է հաշմանդամության քաղաքականությանը։
Ենթակառուցվածքը
- HPA/SNA, տարբեր node-puls, PDB և գերակայություններ։
- Geo-routing, multi-AZ, DR պատրաստակամություն։
Ծրագրեր
- IdempotencyKey փողի/վճարման/webhuks։
- Circuit breakers և թայմաուտներ; bbbprekssure/հերթեր։
- Feature flags և կանարեյկա։
Դիտարկումը
- Treiss միջով (ingress of API) դրամապանակն է։
- Dashbords RPS/latency/errors/queues/QoS strima։
- Alerts աճի համար 'reject _ rate "և քայքայումը' round. settle`.
Արժեքը
- Ճիշտ reques.ru/limits, հնչյունային առաջադրանքների սպոտներ, auto-sleeep-2019։
Ենթակառուցվածքի մեծացումը «ավելի շատ շարժիչների» մասին չէ։ Սա կառավարվող առաձգականության մասին է, որտեղ անհրաժեշտ է կոշտ կոնսիստենտություն (փող), մենք նախագծում ենք գնդաձև միջուկ և արագ գործարքներ։ որտեղ կարող եք տեղափոխվել իրադարձություններին, հերթերին և քեշերին։ Ավելացրեք այս դիտարկումը, երկրագրությունը և օրինագծերի կարգապահությունը, և պլատֆորմը դիմակայելու է ցանկացած գագաթնակետին առանց SLO, P&L փոխզիջումների և խաղացողների վստահության։