आकार देना और यातायात मार्ग
1) यह सब क्यों
आकार और मार्ग - प्रबंधित उपलब्धता और अनुमानित विलंबता का एक आधार:- स्थिरता: चैनलों को स्कोर करने के लिए "शोर पड़ोसियों" को न दें।
- निष्पक्षता: किरायेदारों/वर्गों के बीच प्राथमिकताएं और कोटा।
- दक्षता: हम अनुरोध भेजते हैं जहां इसे तेजी से/सस्ता संसाधित किया जाता है।
- परिवर्तन नियंत्रण: बिना जोखिम के कैनरी/भारित रिलीज।
- बचत: एग्रेस/एग्रेस-लागत और सीडीएन-कैश-हिट्रेट का अनुकूलन।
2) बुनियादी अवधारणाएं
2. 1 ट्रैफिक आकार बनाम पुलिसिंग
आकार देना - लक्ष्य दर पर पैकेट भेजने और बफरिंग द्वारा यातायात को संरेखित करता है (चिकना "विस्फोट")।
पुलिसिंग - बफरिंग के बिना ज्यादतियों (ड्रॉप/अंकन) को "दंडित" करता है। कठिन, लेकिन सस्ता।
2. 2 कक्षाएं, कतारें और विषय
प्राथमिकता कतारें (PRIO), WFQ/DRR (मेला आवंटन), HTB (पदानुक्रमित कोटा), CoDel/RED (बफर ब्लॉक कंट्रोल), ECN (नो ड्रॉप कंजेशन सिग्नल)।
L7 पर - आरपीएस लिमिट/कनेक्शन/बाइट्स और प्राथमिकता पूल के रूप में "कतारें"।
2. 3 एल्गोरिदम को सीमित करना
टोकन बाल्टी (n टोकन दर आर के साथ जोड़ा गया; अनुरोध "खर्च" k टोकन)।
लीकी बाल्टी (निश्चित बहिर्वाह; चिकनी करने के लिए अच्छा)।
वैश्विक/स्थानीय सीमा: स्थानीय - तेज, वैश्विक - मेला (Redis/etcd/per-kenant)।
3) QoS प्रति L3/L4
3. 1 DSCP/TOS और सेवा की कक्षाएं
ट्रैफिक प्रकार (इंटरैक्टिव, बैकेंड आरपीसी, पृष्ठभूमि कार्य) द्वारा लेबल पैकेट।
डेटा केंद्रों में, नेटवर्क कपड़े/क्लाउड के साथ डीएससीपी नीति पर बातचीत करें।
3. 2 लिनक्स tc: HTB + fq_codel (थंबनेल)
bash
Clearing tc qdisc del dev eth0 root 2 >/dev/null true
Корневая HTB с 1Gbit tc qdisc add dev eth0 root handle 1: htb default 30 tc class add dev eth0 parent 1: classid 1:1 htb rate 1gbit
Класс latency-critical 200Mbit tc class add dev eth0 parent 1:1 classid 1:10 htb rate 200mbit ceil 1gbit prio 0 tc qdisc add dev eth0 parent 1:10 handle 10: fq_codel
Класс background 100Mbit tc class add dev eth0 parent 1:1 classid 1:30 htb rate 100mbit ceil 1gbit prio 2 tc qdisc add dev eth0 parent 1:30 handle 30: fq_codel
3. 3 ECN/RED/BBR
ECN चोटियों पर बूंदों को कम करता है; RED/CoDel बफरिंग को प्रतिबंधित करता है।
BBR (घन के बजाय) अक्सर p99 विलंबता को कम करता है, विशेष रूप से WAN/भारी कतारों के शीर्ष पर।
4) L7 रूटिंग (HTTP/gRPC/WS)
4. 1 रूटिंग मानदंड
पथ/पद्धति ('/api/v1/', 'POST'), हेडर (क्लाइंट संस्करण, फ्लैग्स, कैनरी हेडर), कुकीज़ (A/B, स्टिकी), JWT टिकट (किरायेदार/भूमिका), जियो/ASn, समय, लोड (आउटलेयर)।
प्रोटोकॉल: HTTP/2 (मल्टीप्लेक्सिंग), HTTP/3/QUIC (पैकेट लॉस का प्रतिरोध), जीआरपीसी (द्वि-डी धाराएं), वेबसॉकेट (लंबे समय तक जीवित कनेक्शन)।
4. 2 भारित विभाजन/कैनरी रिलीज़
रूट 'v1: 95%', 'v2: 5%', "ग्रीन" मेट्रिक्स के साथ स्वचालित वृद्धि।
कट-ऑफ: त्रुटियां/विलंबता/व्यापार अपरिवर्तनीय।
दूत (स्केच)
yaml route:
weighted_clusters:
clusters:
- name: svc-v1 weight: 95
- name: svc-v2 weight: 5
इस्तियो
yaml apiVersion: networking. istio. io/v1beta1 kind: VirtualService spec:
hosts: ["svc"]
http:
- route:
- destination: { host: svc, subset: v1, weight: 95 }
- destination: { host: svc, subset: v2, weight: 5 }
4. 3 स्टिकी सत्र और लगातार हैशिंग
कुकी/आईपी/जेडब्ल्यूटी पहचानकर्ता द्वारा सत्र आत्मीयता।
कैश क्लस्टर, शर्मीली सेवाओं, दर सीमा गेटवे के लिए लगातार हैशिंग।
Nginx
nginx upstream api {
hash $cookie_user_id consistent;
server 10. 0. 0. 1;
server 10. 0. 0. 2;
}
4. 4 जियो- और विलंबता-जागरूक मार्ग
जियोआईपी/एएसएन किनारे पर (सीडीएन/किनारे) - निकटतम पीओपी/क्षेत्र।
विलंबता-जागरूक: आवधिक स्वास्थ्य नमूने + आरटीटी माप - "सबसे तेज" क्लस्टर के लिए यातायात।
4. 5 आउटलियर डिटेक्शन/सर्किट ब्रेकिंग
"खराब" उदाहरणों को खटखटाना: अधिकतम-इजेक्शन-प्रतिशत, बुनियादी त्रुटियां/विलंबता।
सर्किट ब्रेकर: कनेक्शन/आरपीएस/कतारों में सीमाएं।
5) गेटवे/मैश स्टैक स्तर पर ट्रैफिक को आकार देना
5. 1 दर सीमित
स्थानीय (प्रति-फली): सस्ता, लेकिन उचित अंतर-प्रतिकृति नहीं।
ग्लोबल (Redis/etcd): वैधता प्रति-किरायेदार/एपीआई कुंजी।
राजनेता: प्रति-मार्ग, प्रति-विधि, प्रति-किरायेदार, फट।
दूत आरएलएस (स्केच)
yaml typed_per_filter_config:
envoy. filters. http. ratelimit:
"@type": type. googleapis. com/envoy. extensions. filters. http. ratelimit. v3. RateLimit domain: "api"
rate_limit_service:
grpc_service: { envoy_grpc: { cluster_name: rate_limit_cluster } }
5. 2 निष्पक्षता और प्राथमिकताएं
प्राथमिकता पूल इंटरैक्टिव> सिस्टम> पृष्ठभूमि हैं।
L7 पर DRR/WFQ समकक्ष: कोटा/वजन प्रति-ग्राहक/किरायेदार।
5. 3 ओवरलोड और सुरक्षा
लोड-शेड: बजट पार होने पर विफलता/गिरावट।
अनुकूली संगति: p50/p95/कतार-लेन से सीमाओं की गतिशीलता।
सर्वर-साइड बैकप्रेशर: 429/503 + रीट्री-आफ्टर।
6) ईबीपीएफ और सीएनआई स्तर
6. 1 सिलियम/ईबीपीएफ
कर्नेल में फ़िल्टरिंग/रूटिंग: कम संदर्भ स्विच, पतली L3-L7 नीतियां।
स्थिर वितरण के लिए मैगलेव हैशिंग।
प्रति-पॉड QoS (TC/XDP हुक) के लिए eBPF कार्यक्रम।
6. 2 कैलिको/नेटवर्किंग पॉलिसी
L3/L4 अभिगम नीतियां, बुनियादी प्राथमिकता वर्ग, कुबर्नेट्स QoS (गारंटीड/बर्स्टेबल/बेस्टएरर) के साथ एकीकरण।
7) एज/सीडीएन और एपीआई गेटवे
सीडीएन: कैश कुंजी (सामान्यीकरण क्वेरी/हेडर), बासी-जबकि-पुनर्नवीनीकरण, मूल सुरक्षा (दर सीमा/बॉट फिल्टर)।
एपीआई गेटवे: प्रमाणीकरण, कोटा/टैरिफ प्लान (प्रति-उपभोक्ता), एसएलए प्रतिबंध, भू-मार्ग, एपीआई संस्करण।
WAF: किनारे पर फ़िल्टर करना ताकि कर्नेल के सीपीयू को बर्बाद न किया जा सके।
8) अतुल्यकालिक बसें/स्ट्रीमिंग
काफ्का/एनएटीएस/पल्सर: निर्माता/उपभोक्ता कोटा, बैच आकार की सीमा, लैग के माध्यम से बैकप्रेशर।
इवेंट रूटिंग: किरायेदार/पहचान-कुंजी, एकरूपता के लिए टिमटिमाते विभाजन।
वास्तव में एक बार - "एक बार प्रभावी": लेन-देन निर्माता + आइडेम्पोटेंट चोट।
9) टाइमआउट, रिट्रीट, बैकऑफ
एंड-टू-एंड टाइमआउट: क्लाइंट <प्रॉक्सी <सेवा (इसके विपरीत नहीं)।
रेट्राई: चिड़चिड़ाघातीय बैकऑफ के साथ सीमित संख्या लेकिन कोई तूफान नहीं।
पीछे हटने में पहचान अनिवार्य है; अन्यथा - SAGA/मुआवजा।
Heded/समानांतर अनुरोध (सावधानी): p99 में सुधार, समग्र यातायात बढ़ाता है।
10) अवलोकन और एसएलओ
10. 1 मेट्रिक्स
, , , , , , , , ।
10. 2 ट्रेसिंग
स्कैन सहसंबंध-आईडी; कारण प्रकार के साथ निशान फैलाता है: 'रीट्री' शेड 'थ्रॉटल' कतार '।
सबसिस्टम पर प्रभाव को समझने के लिए रिट्रेज/हेजेज के लिए लिंक।
10. 3 लॉग/रिपोर्ट
बूंदों/शेडिंग/सीमाओं का सारांश, मार्ग द्वारा गर्मी के नक्शे।
निष्पक्षता सूचकांक के लिए अलग पैनल।
10. 4 एसएलओ उदाहरण
95 प्रतिशत लोड पर "p99 ≤ 300 ms; शेड ≤ 0। 1%; 0। 5%».
"ओवरलोड होने पर कम से कम 95% कोटा इंटरैक्टिव क्लास के लिए गारंटी है।"
11) कॉन्फ़िगरेशन उदाहरण
11. 1 Nginx: दर सीमा + फट + कैनरी विभाजन
nginx map $http_x_canary $canary { default 0; 1 1; }
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
upstream api_v1 { server 10. 0. 0. 1; }
upstream api_v2 { server 10. 0. 0. 2; }
server {
location /api/ {
limit_req zone=perip burst=20 nodelay;
if ($canary) { proxy_pass http://api_v2; break; }
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_pass http://api_v1;
}
}
11. 2 दूत: सर्किट ब्रेकर + आउटलेयर का पता लगाना
yaml circuit_breakers:
thresholds:
- priority: DEFAULT max_connections: 1000 max_pending_requests: 500 max_requests: 2000 outlier_detection:
consecutive_5xx: 5 interval: 10s max_ejection_percent: 50 base_ejection_time: 30s
11. 3 इस्तियो: कोटा किरायेदार (लेबल के माध्यम से आरक्षित)
yaml apiVersion: security. istio. io/v1 kind: AuthorizationPolicy spec:
selector: { matchLabels: { app: api } }
rules:
- when:
- key: request. headers[x-tenant]
values: ["gold"]
Next - RateLimitPolicy in the limit provider with a large quota pool for "gold."
11. 4 Kubernetes QoS संकेत
महत्वपूर्ण बोतलों के लिए गारंटी (अनुरोध = सीमा)।
Podpority & Preemption: गंभीर बोतलें पृष्ठभूमि की बाधाओं को विस्थापित करेंगी।
टोपोलॉजी स्प्रेड बाधाएं: स्थिरता के लिए ज़ोनिंग।
12) एंटी-पैटर्न
वैश्विक आंख की सीमा - महत्वपूर्ण ग्राहकों के लिए गलत 429/टाइमआउट।
बिना जिटर/पहचान के रेट्राई - तूफान।
टाइमआउट (क्लाइंट> सर्वर) का भ्रम → फ्रीज और "डबल वर्क"।
प्रोड और प्रयोगों के लिए सामान्य कैश/कतारें - डेटा संदूषण।
सामान्य ज्ञान के बिना "हमेशा चिपचिपा" - असमान भार/गर्म समुद्री मील।
विकलांग बाहरी पहचान - सड़ाहुआ उदाहरण सप्ताह के मैट्रिक्स को खराब करता है।
13) कार्यान्वयन चेकलिस्ट
- खंड यातायात: कक्षाएं/किरायेदार/मार्ग।
- आरपीएस/कनेक्शन/बाइट्स और p95/p99 के लिए लक्ष्य बजट सेट करें।
- दर सीमा (स्थानीय + वैश्विक), सर्किट ब्रेकर, बाहरी पहचान सक्षम करें।
- मेट्रिक्स पर कैनरी विभाजन + ऑटो रोलबैक कॉन्फ़िगर करें।
- घातीय बैकऑफ + जिटर के साथ रिकॉर्ड टाइमआउट/रिट्रेज़।
- ECN/BBR (जहां लागू हो) और egress के लिए सक्षम करें।
- छाया और प्रयोगों के लिए व्यक्तिगत पूल/कैश/कतारें।
- डैशबोर्ड: सीमा, कतार, विलंबता, निष्पक्षता के मैट्रिक्स।
- एसएलओ और रनबुक: शेडिंग/रोलबैक/सक्षम मानदंड।
14) एफएक्यू
प्रश्न: क्या चुनना है: आकार देना या पुलिसिंग?
A: कस्टम रास्तों के लिए - आकार देना (बूंदों के बिना एंटी-अलियासिंग)। सेवा वर्गों के लिए "पृष्ठभूमि "/" थोक "- महत्वपूर्ण प्रवाह की रक्षा के लिए पुलिसिंग।
प्रश्न: आप पीछे हटने वाले तूफानों से कैसे बचें?
A: जिटराइज्ड बैकऑफ, प्रयासों की सीमा, पहचान, सर्वर 'रेट्री-आफ्टर', वैश्विक कोटा का संकेत देता है।
प्रश्न: स्टिकी या हैशिंग?
A: स्टिकी - जब एक सत्र की आवश्यकता होती है/कैश उपयोगकर्ता के लिए स्थानीय होता है; हैशिंग - जब आपको एकरूपता और शेडिंग की स्थिरता की आवश्यकता होती है।
प्रश्न: क्या देता है?
A: TCP HOL ताले के बिना, बेहतर नुकसान सहिष्णुता, तेजी से वसूली - p99/p999 पूंछ को काफी कम करता है।
15) कुल
कुशल आकार देने और एल 7 रूटिंग नीतियों का एक सुसंगत सेट है: प्राथमिकताएं और कोटा, उचित वितरण, सुरक्षित सीमा और स्मार्ट रूटिंग, अवलोकन और एसएलओ द्वारा समर्थित। वर्णित प्रथाओं (HTB/fq_codel/ECN निचले स्तरों पर और ऊपरी स्तर पर दूत/इस्तियो/Nginx/eBPF) का पालन करके, आपको अनुमानित विलंबता पूंछ, ओवरलोड और नियंत्रित, सुरक्षित रिलीज का प्रतिरोध मिलेगा।