एपीआई गेटवे और राउटिंग
1) वास्तुकला में एपीआई गेटवे भूमिका
एपीआई गेटवे - किनारे पर एल 7 घटक, जो:- इनबाउंड ट्रैफिक स्वीकार करता है (HTTP/HTTP2/HTTP3, WebSocket, gRPC)
- नियमों के अनुसार मार्ग (मेजबान/पथ/हेडर/विधि/क्वेरी/भू/वजन/स्वास्थ्य);
- एंड-टू-एंड नीतियों को लागू करता है: प्रमाणीकरण/प्राधिकरण, दर सीमित, WAF, CORS, कैशिंग;
- परिवर्तन करता है (हेडर/निकायों का सामान्यीकरण, gRPC↔JSON, ग्राफक्यूएल सिलाई);
- स्थिरता प्रदान करता है (टाइमआउट, रेट्रीज़, सर्किट-ब्रेकर, बाहरी पहचान);
- अवलोकन और बिलिंग (लॉग, मैट्रिक्स, निशान, कोटा) देता है;
- आंतरिक टोपोलॉजी (सेवा जाल, निजी सेवाएं) को अलग करता है।
अक्सर जोड़े में उपयोग किया जाता है: एज/एपीआई-गेटवे + इंग्रेस/मेश (दूत/इस्तियो/लिंकर्ड) - पहला विदेश नीति, दूसरा - पूर्व-पश्चिम का फैसला करता है।
2) विशिष्ट टोपोलॉजी
एकल वैश्विक प्रवेश द्वार (CDN/edge POP → L7 गेटवे → सेवाएं) - सरल, केंद्रीकृत नीतियां।
क्षेत्रीय प्रवेश द्वार (प्रति-क्षेत्र) + स्मार्ट जियो/विलंबता मार
बहु-किरायेदार: समर्पित मार्ग/उपडोमेन/कुंजी, कोटा और प्रति किरायेदार सीमा।
हाइब्रिड: ऑन-प्रेम + क्लाउड, निजी लिंक/पीयरिंग, एपीआई गेटवे के पीछे निजी बैकेंड।
3) L7 रूटिंग नियम
मापदंड:- मेजबान/पथ: 'एपी। उदाहरण। com '→ '/v1/ऑर्डर/'।
- हेडर: 'एक्स-क्लाइंट', 'एक्स-रीजन', 'यूजर-एजेंट', 'स्वीकार करें'।
- विधि/सामग्री-प्रकार: JSON/Proto/GraphQL को अलग करना।
- क्वैरी/फ्रैगमेंट: सावधानीपूर्वक - कैश/वेरिएंट को प्रभावित करता है।
- जियो/लेटेंसी: निकटतम POP/क्षेत्र, गिरावट के तहत विफल।
- भारित/कैनरी: यातायात वितरण 90/10, 50/50, कुकी द्वारा चिपचिपा।
- सत्र आत्मीयता: कुंजी/टोकन पर हैश-आधारित (स्केलिंग करते समय सावधान).
yaml nginx. ingress. kubernetes. io/canary: "true"
nginx. ingress. kubernetes. io/canary-weight: "10" # 10% traffic to new backend
उदाहरण (दूत, हेडर-आधारित मार्ग):
yaml match: { prefix: "/orders", headers: [{name: "X-Experiment", exact_match: "new"}] }
route: { cluster: orders-v2 }
4) प्रोटोकॉल और संगतता
REST/JSON - डिफ़ॉल्ट, क्लाइंट सत्यापन/पीढ़ीके लिए OpenAPI वर्णन करें।
gRPC - द्विआधारी प्रोटो HTTP/2 से अधिक; बाहरी ग्राहकों के लिए, gRPC-JSON ट्रांसकोडिंग का उपयोग करें।
ग्राफक्यूएल - कुल सेवाएं; परिधि पर, प्रश्नों की जटिलता/गहराई की निगरानी।
वेबसॉकेट/एसएसई - द्विदिश/पुश; चिपचिपा और टाइमआउट पर विचार करें।
HTTP/2/3 (QUIC) - मल्टीप्लेक्सिंग/फास्ट स्टार्ट; WAF/प्रॉक्सी संगतता सत्यापित करें।
5) सुरक्षा: प्रमाणीकरण और प्राधिकरण
5. 1 परिवहन
टीएलएस 1। परिधि पर 2 +, एचएसटीएस, ओसीएसपी स्टेपलिंग, पीएफएस।
mTLS B2B/internal API और मशीन-टू-मशीन के लिए।
आईपी एलोविस्ट/डेनिलिस्ट, भू-बाधाएं।
5. 2 अनुप्रयोग परत
OAuth2/OIDC: JWT वाहक टोकन, हस्ताक्षर/समाप्ति/दर्शकों का सत्यापन।
NMAS/हस्ताक्षर: तिथि + विहित लाइन + हस्ताक्षर (AWS-जैसे) - प्रतिस्थापन, पुनरावृत्ति (नॉन/टाइम विंडो) के खिलाफ सुरक्षा।
एपीआई कुंजी: केवल पहचानकर्ता के रूप में; अधिकार - RBAC/ABAC/स्कोप के माध्यम से।
CORS: स्पष्ट अनुमति-मूल, पूर्व-उड़ान कैश।
WAF: हस्ताक्षर (OWASP API टॉप 10), विसंगति, बॉट सुरक्षा, पुनरावर्ती JSON क्षेत्र।
DDoS/दुर्व्यवहार: कनेक्शन सीमित, टोकन-बाल्टी/लीकी बाल्टी, बर्ट + औसत गति, गतिशील प्रतिबंध।
उदाहरण (कोंग, OIDC और लिमिटर):yaml plugins:
- name: oidc config: { issuer: "...", client_id: "...", client_secret: "...", scopes: ["orders. read"] }
- name: rate-limiting config: { minute: 600, policy: local }
6) मान्यता, परिवर्तन और संगतता
योजनाएं: OpenAPI/JSON-Schema/Protobuf के अनुसार बॉडी/हेडर/पैरामीटर का सत्यापन।
परिवर्तन: क्षेत्र सामान्यीकरण, पीआईआई मास्किंग, सहसंबंध हेडर ('ट्रेसपेरेंट', 'एक्स-अनुरोध-आईडी') के अलावा।
वर्शनिंग: 'हेडर: एक्स-एपीआई-संस्करण', उपसर्ग '/v1 ', संसाधन-संस्करण; मूल्यह्रास नीति - सूर्यास्त।
बैकवर्ड-कॉम्पैट: केवल ऐड-फील्ड; नए संस्करण के बिना "ब्रेकिंग" परिवर्तन से ब
Idempotency: 'Idempotency-Key' для POST; TTL के साथ Redis में गेटवे स्टोर कीज़।
7) लचीलापन: कनेक्शन नीतियां
टाइमआउट: कनेक्ट/रीड/राइट; उचित चूक (उदा। 1s/5s/5s)।
रिट्रीज़: केवल सुरक्षित और पहचान के लिए; जिटर, घातीय बैकऑफ, अधिकतम प्रयास।
सर्किट ब्रेकर: त्रुटियों/विलंबता पर खुला; नमूनों के लिए आधा खुला।
बाहरी पता लगाना - पूल से बुरे उदाहरणों को हटा दें।
बल्कहेड/प्रतियोगिता: समवर्ती प्रति मार्ग अनुरोधों पर सीमा।
असफल: सक्रिय/निष्क्रिय, क्षेत्रीय गिरावट।
छाया यातायात: V2 "ग्रे" तुलना के लिए V1 (प्रतिक्रिया पर कोई प्रभाव नहीं) के समानांतर चलता है।
उदाहरण (दूत सर्किट ब्रेकर):yaml circuit_breakers:
thresholds:
- priority: DEFAULT max_connections: 1024 max_pending_requests: 2048 max_retries: 3
8) कैशिंग और प्रदर्शन
HTTP- кеш: 'कैश-कंट्रोल', 'ETag/if-None-Match', 'Vary', 'स्टेल-जबकि-रिवाइवल'।
एज कैश/POP: CDN स्थिर और कैश्ड API (पहचाने गए GETs) के लिए।
संपीडनः 'gzip/br' (पहले से संपीड़ित न करें).
अनुरोध ढहने ("कोलसिंग"): समान समानांतर अनुरोधों का संयोजन।
प्रतिक्रिया आकार: फ़ील्ड/फ़िल्टर, कर्सर-आधारित, आकार सीमाएँ।
9) अवलोकन और संचालन
Метрики: 'l7 _ req _ कुल {मार्ग, विधि, कोड}', 'लेटेंसी _ ms {p50, p95, p99}', 'अपस्ट्रीम _ errors', 'cb _ state', '429 _ rate', 'कोटा _ usage {tenant}'।
लॉग: संरचनात्मक, 'trace _ id/span _ id', 'user _ id/tenant _ id', 'क्लाइंट _ ip' के साथ।
निशान: W3C ट्रेस संदर्भ ('ट्रेसपेरेंट', 'ट्रैकेस्टेट'), ऊपर की ओर प्रचारित करें।
ऑडिट: किसने, क्या अधिकारों के साथ; संवेदनशील एपीआई के लिए अपरिवर्तनीय स्टोर।
SLO/SLA: लक्ष्य p99, त्रुटि बजट; मूल स्तर वैश्विक स्तर से बेहतर है।
10) क्षमता योजना प्रबंधन
न्यूनतम/घंटे/दिन में कोटा प्रति किरायेदार/कुंजी/ग्राहक पूल।
बर्स्ट + निरंतर सीमा; चिकनी के लिए रिसाव बाल्टी।
निष्पक्षता: जब अतिभारित - निष्पक्ष कतार "पहले सामना किया" के बजाय।
प्राथमिकताएं: प्राथमिकता और समर्पित पूल के साथ प्रणाली/महत्वपू
11) परिवर्तन प्रबंधन और रिलीज़
कैनरी/ब्लू-ग्रीन: वजन मार्ग; SLO (त्रुटियों/विलंबता) पर स्वचालित अग्रिम।
फ़ीचर गेट्स/बैकएण्ड फ्लैग्स: हेडर/टोकन द्वारा सक्षम करें।
Shadowing/diff validators: निकायों/स्टेटस, डेल्टा सहिष्णुता की तुलना।
मंचन: आवंटित डोमेन/पथ ('मंचन। एपी... '), व्यक्तिगत कुंजी और कोटा।
12) कॉन्फ़िगरेशन उदाहरण
12. 1 NGINX - बेसिक लिमिट और कैश गेटवे
nginx map $http_x_request_id $reqid { default $request_id; }
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
server {
listen 443 ssl http2;
server_name api. example. com;
security add_header Strict-Transport-Security "max-age = 31536000" always;
location /v1/ {
limit_req zone=perip burst=30 nodelay;
proxy_set_header X-Request-ID $reqid;
proxy_set_header Authorization $http_authorization;
proxy_connect_timeout 1s;
proxy_read_timeout 5s;
proxy_cache api_cache;
proxy_cache_valid 200 10s;
proxy_cache_use_stale error timeout updating;
proxy_pass http://orders-v1;
}
}
12. 2 दूत - संतुलन और रिट्रे राउटिंग
yaml routes:
- match: { prefix: "/orders" }
route:
weighted_clusters:
clusters:
- name: orders-v1 weight: 90
- name: orders-v2 weight: 10 retry_policy:
retry_on: "5xx,reset,connect-failure"
num_retries: 2 per_try_timeout: 2s
12. 3 ट्रेफिक - मिडिलवेयर और हेडर
yaml http:
middlewares:
secHeaders:
headers:
stsSeconds: 31536000 contentTypeNosniff: true routers:
api:
rule: "Host(`api. example. com`) && PathPrefix(`/v1`)"
service: svc-orders middlewares: ["secHeaders"]
13) एंटी-पैटर्न
सभी पर एक वैश्विक सीमा - "अच्छे पड़ोसी" "शोर" के कारण पीड़ित हैं।
पहचान के बिना रिट्रेज़ → डुप्लिकेट प्रभाव (भुगतान, संस्थाओं का निर्माण)।
'टाइमआउट '/' मैक्स बॉडी साइज' को नजरअंदाज करना → हैंग/थकाऊ श्रमिकों।
गेटवे में किनारे की नीतियों और व्यावसायिक तर्क को मिलाना (परिधि का वजन)।
योजनाओं की मान्यता का अभाव - ग्राहकों की नाजुकता और "ब्रेकिंग" रिलीज़।
ऑथ/लिमिट/निष्क्रिय समय को छोड़ कर नग्न वेब सॉकेट।
रोटेशन के बिना सुर्खियों में रहस्य; आंतरिक B2Bs में कोई mTLS नहीं।
14) टेस्ट प्लेबुक (गेम डेज़)
अनुरोधों का तूफान: सीमा/कोटा की जाँच करें, 429-व्यवहार, गिरावट।
एक क्लस्टर का नुकसान: असफल/वजन पुनर्वितरण; एसएलओ कैनरी।
भारित उत्तर: अधिकतम शरीर/समय; जोड़ों को काटना।
इंजेक्शन/विसंगतियाँ: WAF नियम, पुनरावर्ती JSON निषेध, बड़े ग्राफ़क्यूएल गहराई।
ट्रेस 'ट्रेसपेरेंट' प्रसार और नमूना जांचने में विफल रहा।
रहस्य: कुंजी रोटेशन/JWKS, टोकन समाप्ति, घड़ी-तिरछा सहिष्णुता।
15) कार्यान्वयन चेकलिस्ट
- डोमेन/पथ/संस्करण परिभाषित, OpenAPI/Proto प्रकाशित।
- टीएलएस/एमटीएलएस, एचएसटीएस, गुप्त प्रबंधन और रोटेशन कॉन्फ़िगर किए गए हैं।
- प्रमाणीकरण (OIDC/HMAC), RBAC/स्कोप, CORS सक्षम।
- सीमा/कोटा प्रति-किरायेदार, निष्पक्ष कतारें, 429-UX।
- वजन/हेडर रूटिंग, कैनरी प्लान और रोलबैक।
- टाइमआउट/रीट्री/सर्किट-ब्रेकर/आउटलेयर पॉलिसी।
- योजना सत्यापन, परिवर्तन, पीआईआई मास्किंग।
- edge- кеш/ETag, colessing, gzip/br।
- अवलोकन: मैट्रिक्स, लॉग, ट्रैक, डैशबोर्ड और अलर्ट।
- रनबुक: घटनाएं, प्रमुख रोटेशन, ब्लॉक लिस्ट, ब्लैक फ्राइडे।
16) एफएक्यू
प्रश्न: एपीआई प्रवेश द्वार सेवा जाल से कैसे भिन्न है?
A: गेटवे - उत्तर-दक्षिण (बाहरी परिधि, अंत-से-अंत नीतियां)। मेश - पूर्व-पश्चिम (इंट्राक्लेटर कनेक्टिविटी/एमटीएलएस/रेट्राई)। अक्सर एक साथ उपयोग किया जाता है।
प्रश्न: कहां से लागू करें: प्रवेश द्वार या सेवाओं में?
A: दोनों स्तर: प्रवेश द्वार - मोटे-दाने (प्रमाणीकरण, मूल अधिकार/कोटा), सेवा - ठीक-ठीक अनाज (डोमेन भूमिकाएं/विशेषताएं)।
प्रश्न: gRPC-JSON ट्रांसकोडिंग की जरूरत कब है?
A: जब आंतरिक gRPC, और बाहर REST/JSON और सरल क्लाइंट/ब्राउज़र की आवश्यकता होती है।
प्रश्न: एक संस्करण रणनीति कैसे चुनें?
A: सार्वजनिक API - पथ '/vN '+ अभाव शीर्षक और लंबे ओवरलैप के लिए। आंतरिक - क्षमता-झंडे/संगतता योजना के लिए।
17) कुल
एपीआई गेटवे न केवल एक प्रॉक्सी है, बल्कि नीतियों और लचीलापन का केंद्र है। उचित मार्ग, सुरक्षा, सीमा, सत्यापन और अवलोकन पूर्वानुमेयता और रिलीज की गति देते हैं। सेवा जाल, स्वचालित कैनरी और कोटा के साथ एज गेटवे को मिलाएं, परीक्षण विफलताएं - और परिधि आपका त्वरक बन जाएगी, न कि एक अड़ चन।