परिचालन और → प्रबंधन ऑपरेशनल इंफ्रास्ट्रक्चर स्केलिंग
ऑपरेशनल इन्फ्रास्ट्रक्चर स्केलिंग
1) क्यों और क्या "स्केलिंग" माना जाता है
SLO को खोए बिना और नियंत्रित लागत पर थ्रूपुट (RPS/TPS, कनेक्शन, IOPS, थ्रूपुट) और डेटा वॉल्यूम को बढ़ाने के लिए प्लेटफ़ॉर्म की सिस्टम क्षमता है। IGaming/fintech के लिए, यह सीधे पैसे के बारे में है: जमा/शर्त रूपांतरण, लाइव गेम और बस्तियाँ।
उद्देश्य:- एक्स-फोल्ड लोड ग्रोथ और मौसमी चोटियों पर एसएलओ रखें।
- पूर्वानुमानित स्केलिंग समय (मिनट, घंटे नहीं) प्रदान करें।
- अर्थव्यवस्था बचाएं: लागत/आरपीएस, लागत/लेनदेन, लागत/1k घटना।
2) स्केलेबल प्लेटफॉर्म सिद्धांत
1. क्षैतिज-पहला: छोटी, स्टेटलेस सेवाओं में विभाजन; स्थिति - डेटा समूहों में।
2. बैक-प्रेशर और कतारें: चिकनी फटना, "तूफान" से सुरक्षा।
3. सभी परतों पर कैशिंग: क्लाइंट/एज/सर्विस/डेटाबेस।
4. पहचान और दोहराव: सुरक्षित रिट्रीट, आउटबॉक्स, डेडअप।
5. विवश निर्भरता: टाइमआउट, ब्रेकर, बल्कहेड अलगाव, दर-सीमा।
6. क्षमता संकेतों द्वारा अवलोकन: हेडरूम, p95/p99, लैग, कनेक्शन, कोटा।
7. गार्ड रेल के साथ ऑटो-स्केलिंग: एचपीए/वीपीए/क्लस्टर ऑटोस्केलर + स्टॉप स्थिति।
8. डिजाइन द्वारा बहु-क्षेत्र: स्वतंत्र विस्फोट क्षेत्र, स्थानीय डेटा, स्
3) क्षमता योजना: "आपको कितनी आवश्यकता है" की गणना कैसे करें
मॉडल इनपुट: लक्ष्य पीक टीपीएस, ट्रैफिक प्रोफाइल (प्रति घंटा), "महत्वपूर्ण पथ", कैश हिट अनुपात, औसत पेलोड, एसएलओ और प्रदाता सीमा।
त्वरित आकलन (नियम-के-अंगूठे):- RPS CPU/पॉड्स: 'पॉड्स = RPS _ _ CPU _ in _ pod' (30-50% के मार्जिन के साथ)।
- कतारें: 'न्यूनतम _ स्पीड _ ऑफ _ उपभोक्ता _ पीक _ स्पीड _ ऑफ _ प्रोड्यूसर्स 1। 2`.
- DB कनेक्शन: 'max _ conns = active _ service _ pool _ size 1। 3`.
- कैश: आकार = "एन मिनट में गर्म कार्य-सेट" + 20-30% मार्जिन।
- एग्रेस/सीडीएन: पीक एग्रेस = पीक अनुरोध औसत प्रतिक्रिया आकार (संपीड़न पर विचार करें)।
हेडरूम: चरम पर 20-40% लक्ष्य (परत द्वारा)। 15% से नीचे - "क्षमता उत्थान" ट्रिगर।
4) परतें और स्केलिंग पैटर्न
4. 1 एज/सीडीएन/डब्ल्यूएएफ
एज कैशिंग (TTL + SWR), भू-संतुलन, संपीड़न, HTTP/2/3।
IP/JWT/कुंजी द्वारा परिधि पर दर-सीमा, वृद्धि संरक्षण।
इवेंट फैन-आउट (जैकपॉट, लाइव अलर्ट) दलालों/पब/उप चैनलों के माध्यम से।
4. 2 बैकेंड-फॉर-फ्रंटेंड एपीआई गेटवे
स्टेटल द्वारा क्षैतिज स्केलिंग, नीचे की ओर समर्पित पूल।
बिजनेस मैट्रिक्स द्वारा एचपीए: आरपीएस, पी 99, वर्क पूल कतार - न केवल सीपीयू।
4. 3 अतुल्यकालिक कतारें/स्ट्रीमिंग (काफ्का/खरगोश/पल्सर)
पार्टियों और उपभोक्ताओं द्वारा स् तिरछा (चाबियाँ और वितरण) से बचें।
लैग अलर्ट + उपभोक्ताओं के ऑटो-स्केलिंग; DLQ और पुन: प्रयास विषय।
एसएलए सामंजस्य और पुनरावृत्ति के तहत प्रतिधारण।
4. 4 कैश (रेडिस/मेमकैच)
क्लस्टर मोड, प्रतिकृति, निष्कासन नीतियां (एलएफयू), मल्टीगेट, पाइपलाइन।
हॉट-की और बैकग्राउंड टास्क, क्लाइंट लिमिट और मैक्स-मेमोरी पॉलिसी का अलगाव।
4. 5 डेटाबेस
प्रतिकृति पढ़ें और रूटिंग, कनेक्शन पूलिंग।
क्षेत्र/किरायेदार/कुंजी रेंज द्वारा भागीदारी।
CQRS: मास्टर/लीडर को लिखता है, प्रतिकृतियों को पढ़ ता है।
इंडेक्सिंग और बैच-राइटिंग वर्कफ़्लो (आउटबॉक्स → स्ट्रीम → सिंक)।
संग्रह और गर्म/ठंडा डेटा (tiering)।
4. 6 फ़ाइल/वस्तु भंडार
मल्टीथ्रेडिंग, मल्टीपार्ट डाउनलोड, सीडीएन-फ्रंट, अतुल्यकालिक परिवर्तन।
प्रदाता कोटा, पूंछ की सफाई और बजट।
4. 7 प्रदाता (PSP/KYC/स्टूडियो)
बहु-विक्रेता और उद्धरण/एसएलओ/लागत मार्ग।
प्रत्येक प्रदाता के लिए सर्किट ब्रेकर + दर-सीमा, रिट्रे कतार, "अनुग्रह मोड"।
5) ऑटो-स्केलिंग और गार्ड रेल
कुबेरनेट्स:- HPA: метрики 'rps _ per _ pod', 'कतार _ depth', 'p99 _ latency'; 'लक्ष्य - मूल्य'.
- वीपीए: संसाधन दिशानिर्देश; शिखर से बाहर अद्यतन।
- क्लस्टर ऑटोस्केलर: प्राथमिकताओं के साथ स्पॉट + ऑन-डिमांड प्रोफाइल।
- PodDis बजट/ToploySuderComments: क्षेत्रों में एक समान।
- रेंज/रिसोर्सकोटा: "नशे" की कमी से सुरक्षा।
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
गार्ड (उदाहरण):
- "ठहराव और रोलबैक", यदि कैनरी p99> 1 के साथ। 3 × बेसलाइन 10 मिनट।
- प्राइम टाइम में "फ्रीज स्केल-डाउन", केवल स्केल-अप।
- अड़ चनों के लिए 'ओपन _ सर्किट = 1' पर "स्टॉप रिट्रीज़"।
6) बहु-क्षेत्र: परिसंपत्ति/संपत्ति और परिसंपत्ति/दायित्व
विस्फोट-पृथक क्षेत्र: स्वतंत्र समूह, स्थानीय रहस्य/कोटा।
वैश्विक मार्ग: लेटेंसी-/भू-आधारित, स्वास्थ्य-जांच, मैनुअल ओवरराइड।
डाटा:- गर्म - स्थानीय रूप से + अंतिम प्रतिकृति (धाराएँ)।
- महत्वपूर्ण लेन - डोमेन (खाता/शेष) के अनुरूप।
- विफल प्लेबुक: चरण-दर-चरण स्रोत परिवर्तन, टीटीएल, वार्म-अप कैश।
- व्यायाम विनियमन (डीआर): आरटीओ/आरपीओ लक्ष्यों के साथ त्रैमासिक वर्कआउट।
7) नेटवर्क और सेवा पैटर्न
सेवा मेश: एमटीएलएस, रीट्री/ब्रेकर, बाहरी पहचान, प्रति-डाउनस्ट्रीम सीमा।
eBPF/अवलोकन L4/L7, कनेक्शन सीमा, हेड-ऑफ-लाइन सुरक्षा पर।
S2S, सामान्य दर-सीमा और ऑडिट के लिए आंतरिक एपीआई प्रवेश द्वार।
विस्फोट क्षेत्रों, NAT/Egress नियंत्रण द्वारा VPC/सबनेट, विक्रेताओं के साथ सहकर्मी।
8) प्रदर्शन: परीक्षण और प्रमाण
प्राइमटाइम + सबसे खराब स्थिति में तनाव लोड करें।
भिगोना (लंबा) - मेमोरी/डिस्क्रिप्टर लीक, विलंबता वृद्धि।
अराजकता/खेल-दिन: ब्रोकर/प्रदाता/ज़ोन ड्रॉप, "धीमा प्रदाता।"
CI में Perf regression: संदर्भ परिदृश्यों और स्वचालित द्वार का एक सेट।
मिनी-परिदृश्य मैट्रिक्स:9) डेटा और भंडारण: विकास रणनीतियाँ
छत के लिए ऊर्ध्वाधर विकास → क्षैतिज/शार्डिंग।
पढ़ें → प्रतिकृति/कैश; रिकॉर्ड → बैच/asynchron/log।
स्कीमा पलायन: विस्तार → माइग्रेट → अनुबंध, कोई वैश्विक ताला नहीं।
संग्रह: सस्ते भंडारण + ऑन-डिमांड री-हाइड्रेशन के लिए ठंडे बैच।
खोज: वृद्धिशील अद्यतन पाइपलाइन के साथ व्यक्तिगत सूचकांक (OpenSearch/Solr)।
10) प्रदाताओं और कोटा का प्रबंधन करें
कोटा कार्ड (टीपीएस, विंडो, लागत); अलर्ट का उपयोग _ अनुपात> 0। 9`.
लागत/गुणवत्ता (स्मार्ट रूटिंग) द्वारा अनुमार्
OLA ↔ SLO समझौते और कोटा वृद्धि प्रक्रिया।
विकल्पों का पूल और "हॉट" स्विचिंग।
11) अवलोकन और स्केलिंग संकेत
मेट्रिक्स (न्यूनतम):- क्षमता हेडरूम по слоям; 'कतार _ लैग/बैकलॉग वृद्धि'; 'काफ्का आईएसआर'; 'डीबी कनेक्शन '/' रेपल लैग'; 'redis evictions'; 'open _ circut '/' retry _ usage'; 'कोटा _ usage'।
- व्यावसायिक मैट्रिक्स: सफलता दर/जमा रूपांतरण, खेल शुरू समय।
- लागत: लागत/आरपीएस, लागत/1k कॉल।
- क्षमता अवलोकन (हेडरूम, शीर्ष जोखिम, बर्न-रेट एसएलओ)।
- स्ट्रीम और कतार पैनल (लैग/बैकलॉग, उपभोक्ता संतृप्ति)।
- DB & Cache (p99, कनेक्शन, हिट/निष्कासन)।
- प्रदाता और उद्धरण (टीपीएस, टाइमआउट, लागत, स्विचिंग)।
- सुरक्षा बदलें (प्री/पोस्ट रिलीज, कैनरी, ऑटोगेट्स)।
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) फिनोप्स: स्केलिंग लाभदायक है
दक्षता अनुपात: लागत/आरपीएस, लागत/जमा, लागत/1k घटना।
राइट-साइज़िंग: वीपीए/सिफारिशें, अति-प्रावधान रिपोर्ट।
गैर-महत्वपूर्ण के लिए स्पॉट/प्रस्तावना; बेसलोड के लिए आरक्षित/प्रतिबद्ध।
एग्रेस बजट और कैशिंग, सीडीएन/एज ऑफ़ लोड।
मूल्य स्तर (गर्म बनाम ठंडा) द्वारा लॉग का संग्रह और संग्रह।
विस्तार के लिए चेतावनी कोटा (सॉफ्ट-कैप) और ऑटो-टिकट।
13) प्रक्रियाएं और लोग
परिवर्तन प्रबंधन: कैनरी, फिचफ्लैग, रीग्रेशन में रुकता है।
हादसा-तत्परता: रनबुक 'और "कहां क्षमता जोड़ ना है", "क्षेत्र कैसे स्विच करें"।
शेड्यूलिंग चोटियाँ: मैच/टूर्नामेंट/अभियान कैलेंडर और प्रदाता खिड़कियां।
नियमित खेल के दिन और डीआर अभ्यास।
स्वामित्व मैट्रिक्स: जो फीलओवर पर "बटन दबाते हैं "/कोटा बढ़ाते हैं।
14) कार्यान्वयन चेकलिस्ट
मूल स्केलेबिलिटी शुरू करना (2-4 सप्ताह):- महत्वपूर्ण रास्तों और सीमाओं का नक्शा (परत द्वारा), हेडरूम लक्ष्य ≥ 30%।
- बिजनेस मेट्रिक्स + क्लस्टर ऑटोस्केलर द्वारा एचपीए; PDB/Srediftrants।
- गर्म रास्तों पर कतारें, पहचान-कुंजी, आउटबॉक्स।
- कैश: हिट गोल - 90%, निष्कासन नीति, प्रमुख सूचकांक।
- डीबी: प्रतिकृति, कनेक्शन पूल, शार्डिंग योजना पढ़ें।
- प्रदाता: मल्टी-वेंडर, कोटा, ब्रेकर/रिट्रीट।
- डैशबोर्ड "क्षमता/स्ट्रीम/डीबी/प्रदाता", 11 से अलर्ट करता है।
- कैनरी और प्री-/पोस्ट-रिलीज़ऑटोगेट्स।
- डीआर प्लेबुक और एक आंशिक फीलओवर प्रशिक्षण।
- कैश वार्मिंग, प्री-स्केल एचपीए/एएसजी, वार्म-स्टैंडबाय प्रतिकृतियां।
- प्रदाता कोटा बढ़ाएं, स्मार्ट रूटिंग सक्षम करें।
- गैर-महत्वपूर्ण अलर्ट के लिए नाइट-मोड दमन सक्षम करता है।
- "सुरक्षित मोड" सुविधा तत्काल सक्रियण के लिए तैयार है।
15) एंटी-पैटर्न
क्षैतिज के बजाय लंबवत उन्नयन "पूर्ण विराम"।
सभी डाउनस्ट्रीम पर थ्रेड्स/कनेक्शन का एक सामान्य हेड-ऑफ-लाइन पूल।
अड़ चन समय पर रेट्राई, जिटर - तूफान की कमी।
अलर्ट और पैमाने की नीतियों में कोई हिस्टेरिसिस नहीं है - "आरी।"
डेटा शार्डिंग और स्थानीयकरण के बिना एकल वैश्विक डेटाबेस।
टाइमआउट/रिट्रे/ऑब्जर्वेबिलिटी कंट्रोल के बिना विक्रेता एसडीके में अंधा विश्वास।
डीआर अभ्यास की कमी: फीलओवर "केवल कागज पर"।
16) स्केलेबिलिटी केपीआई
शिखर पर एसएलओ अनुपालन (p95/p99, सफलता दर)।
प्राइम टाइम में परत द्वारा हेडरूम।
MTTS (स्केल करने का औसत समय) - जब तक अतिरिक्त संसाधन उपलब्ध नहीं हैं।
बैकलॉग/लैग रिज़ॉल्यूशन टाइम - शिखर के बाद कतारें गिरने का समय।
सक्रिय वृद्धि की अवधि के लिए विफलता दर बदलें।
कैश/सीडीएन/एज ऑफ़ लोड से लागत/आरपीएस और बचत।
डीआर तत्परता: व्यायाम में आरटीओ/आरपीओ।
17) "त्वरित" टेम्पलेट के उदाहरण
काफ्का: उपभोक्ताओं की भागीदारी और ऑटोस्केल (विचार):
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
रेडिस:
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) एफएक्यू
प्रश्न: पहले पैमाने पर क्या करें?
A: डैशबोर्ड के अनुसार अड़ चनें: कतारें/कैश/डेटाबेस पढ़ ता है। गर्म रास्ते (जमा/शर्त/गेम लॉन्च) एक प्राथमिकता है।
प्रश्न: यह कैसे समझें कि ऑटो-स्केलिंग "इसे बदतर बनाती है"?
A: सहसंबंध देखें: स्केल- up↑, और p99/त्रुटियां सुधरती नहीं हैं - शायद आप "समस्या को स्केल" (संकीर्ण स्ट्रीम/कोटा)। ब्रेकर/गिरावट शामिल करें।
प्रश्न: क्या आपको हमेशा दूसरे प्रदाता की आवश्यकता है?
A: महत्वपूर्ण रास्तों के लिए, हाँ। अन्यथा, एक सरलीकृत स्क्रिप्ट और कैश के साथ कम से कम "सुरक्षित मोड"।
प्रश्नः सक्रिय-सक्रिय или सक्रिय-निष्क्रिय?
A: यदि आरटीओ की आवश्यकताएं कम हैं और कई क्षेत्रीय खिलाड़ी सक्रिय हैं। अन्यथा, एक प्रयुक्त feilover के साथ सक्रिय-निष्क्रिय के साथ शुरू करें।