एपीआई गेटवे और राउटिंग
1) वास्तुकला में एपीआई गेटवे भूमिका
एक एपीआई प्रवेश द्वार माइक्रोसर्विस में प्रवेश का एक बिंदु है। वह है:- मार्ग अनुरोध (पथ/शीर्षकों/भू/भार/संस्करण द्वारा)।
- परिधि की रक्षा करता है (TLS/mTLS, WAF, DDoS, दर सीमा, authN/Z)।
- ट्रैफिक (कैनरी/एबी, शैडो/मिरर, सर्किट ब्रेकर, रेट्रा, टाइमआउट) को नियंत्रित करता है।
- प्रोटोकॉल (REST/gRPC/WebSocket), हेडर, कोड मानकीकृत करता है।
- अवलोकन (लॉग, मैट्रिक्स, निशान, सहसंबंध)।
- रूपांतरण और मान्यता (JSON/XML, सामान्यीकरण, स्कीमा-सत्यापन)।
IGaming के लिए, यह भू-अनुपालन (देश/आयु अवरुद्ध), स्मार्ट भुगतान मार्ग और किनारे पर जिम्मेदार गेमिंग नीतियां भी हैं।
2) रूटिंग विकल्प
पथ-आधारित: '/api/v1/भुगतान/ → भुगतान-svc '।
मेजबान-आधारित: 'यूरोपीय संघ। api। उदाहरण। com → eu-edge ',' psp। उदाहरण। com → psp-proxy '।
हेडर-आधारित: 'एक्स-क्लाइंट: पार्टनर-ए' → पार्टनर बैकेंड; 'स्वीकार करें: आवेदन/grpc'।
जियो-रूटिंग: आईपी/एएसएन/देश (जीडीपीआर/स्थानीय निषेध, विलंबता) द्वारा।
भारित/कैनरी: पुराने पर '90%', नए संस्करण पर '10%'; त्वरित रोलबैक।
दावा-मार्ग: по 'JWT। दावे। टियर/रोल/रीजन '(उदाहरण के लिए, हाई-रोलर → प्रीमियम लिमिट)।
विफलता: डेटा सेंटर/क्लाउड और पीएसपी के बीच परिसंपत्ति/परिसंपत्ति-दायित्व।
3) परिधि सुरक्षा
टीएलएस हर जगह: टीएलएस 1। बाहरी पर 2 +, mTLS अंदर (shlyuz↔servisy)।
OAuth2/JWT: हस्ताक्षर सत्यापन, ऑडिट 'exp/nbf/aud/scope', JWKS रोटेशन; टीटीएल के साथ सत्यापन कैश।
HMAC: वेबहुक/भुगतान के लिए शरीर के हस्ताक्षर।
एपीआई कुंजी: सिस्टम क्लाइंट के लिए; कोटा/भूमिकाओं के साथ सहयोगी।
WAF: बुनियादी नियम (इंजेक्शन, प्रोटोकॉल विसंगतियां), शरीर का आकार, देशों की सूची से इनकार।
DDoS सुरक्षा: कनेक्शन सीमित, SYN कुकीज़, IP/key/endpoint पर दर-सीमा।
जीरो-ट्रस्ट: अनिवार्य नीतियां (SPIFFE/SPIRE, सेवा पहचान), कम से कम अधिकारों का सिद्धांत।
गोपनीयता: लॉग, पैन/आईबीएएन मास्किंग, भंडारण नीति में पीआईआई संपादन।
4) फटने से सीमा, कोटा और सुरक्षा
Модели: टोकन बाल्टी, लीकी बाल्टी, फिक्स्ड/स्लाइडिंग विंडो।
सीमाएँ: प्रति-आईपी, प्रति-कुंजी, प्रति-उपयोगकर्ता, प्रति-मार्ग।
वैकल्पिक:- बर्स्ट + निरंतर (उदा। '50 आरपीएस फट', '10 आरपीएस बनाए रखना')।
- रीट्री-बजट और स्लो-लोरिस सुरक्षा (टाइमआउट पढ़ें)।
- भागीदारों के लिए दिन/महीने के हिसाब से कोटा।
5) परिवर्तन और सत्यापन
हेडर सामान्य करें (ट्रेस-आईडी, लोकेल, क्लाइंट-आईडी)।
अनुरोध/प्रतिक्रिया मैपिंग।
प्रॉक्सी करने से पहले स्कीमा सत्यापन (OpenAPI/JSON स्कीमा) - प्रारंभिक 4xx विफलता।
संपीड़न/' स्वीकार करें-एनकोडिंग ', कैशिंग (नीचे देखें)।
6) कैशिंग और प्रदर्शन
निर्देशिका, सार्वजनिक मेटाडेटा, कॉन्फ़िग्स (TTL, 'ETag '/' इफ-नो-मैच') के लिए एज कैश.
हॉट गेट के लिए माइक्रो-कैश 1-5 एस (पीक लोड को कम करता है)।
ऋणात्मक कैश शॉर्ट (404/खाली) - सावधान।
हेजिंग-अनुरोध और प्रतिस्पर्धी अनुरोध p95> सीमा पर प्रतिकृति के लिए।
7) टाइमआउट, रिट्रीट, लचीलापन
टाइमआउट: अलग से कनेक्ट/पढ़ें/लिखें; उचित p95-स्थल।
रिट्राई: बैकऑफ + जिटर के साथ पहचान करने वाले तरीके (GET/PUT); पुन: बजट।
POST idempotency: 'Idempotency-Key' + सेवा/गेटवे deduplication।
सर्किट-ब्रेकर: त्रुटियों/विलंबता द्वारा; आधा खुला परीक्षण।
बल्कहेड/पूल-अलगाव ऊपर की ओर।
8) वर्शनिंग और संगतता
तरीके:- यूआरआई: '/v1/... '(सरल, लेकिन "शोर" मार्ग)।
- हेडर/कंटेंट-बातचीत: 'स्वीकार करें: आवेदन/vnd। app। v2 + json '।
- फ़ीचर-फ्लैग/सर्वर क्षमता - मामूली-परिवर्तन संगतता के लिए।
नीति: SemVer, समर्थन विंडो (उदाहरण के लिए, 'v1' = 12-18 महीने), अवक्षेपण अनुसूची, एक्सटेंशन के लिए संगत प्रतिक्रियाएं (फ़ील्ड जोड़ ना टूटता नहीं है)।
9) अवलोकन और गुणवत्ता नियंत्रण
सहसंबंध: 'ट्रेसपेरेंट '/' एक्स-रिक्वेस्ट-आईडी' आवश्यक; हम इसे नीचे फेंक देते हैं।
OpenTelemetry: RPS/p50/p95/p99/5xx/4xx, संतृप्ति, रीट्री/सर्किट इवेंट मेट्रिक्स।
लॉग: संरचनात्मक JSON; PII का भेस; कोड द्वारा स्तर।
ट्रेस सैंपलिंग: त्रुटियों/धीमी गति के लिए मूल 5-10% + लक्ष्य।
SLO/अलर्ट: मार्गों/ग्राहकों (अपटाइम, विलंबता, त्रुटि) द्वारा।
10) रिलीज ट्रैफिक मैनेजमेंट
ब्लू-ग्रीन डीएनएस/एलबी स्विच।
कैनरी: वजन शेयर/खंड (क्षेत्र, भागीदार, भूमिका)।
छाया/दर्पण: क्लाइंट को जवाब दिए बिना नए संस्करण में ट्रैफ़िक की प्रति।
किल-स्विच: समस्याग्रस्त अपस्ट्रीम/फीचर को जल्दी से निष्क्रिय करने के लि
11) स्मार्ट भुगतान रूटिंग (आईगेमिंग)
पीएसपी चयन नियम: भू, मुद्रा, राशि, जोखिम दर, उपलब्धता, आयोग।
विफल PSP: '5xx/timeout' पर स्वचालित संक्रमण।
समान-विधि नियम: मूल विधि के माध्यम से रिटर्न/आउटपुट - किनारे पर जांच करें।
भुगतान आईडी: 'useId + राशि + मुद्रा + उद्देश्य' पर कुंजी।
ईटीए पारदर्शिता: प्रवेश द्वार स्टेटस और विफलता के कारण (पीएसपी कोड नहीं) जोड़ ता है।
12) क्रॉस-क्षेत्र की नीतियां और अनुपालन
जियो-फिल्टर: देशों की सफेद/काली सूची, आयु प्रतिबंध, आईपी रेंज।
निवासी डेटा: क्षेत्रीय समूहों (जीडीपीआर/स्थानीय कानून) के लिए मार्ग।
लॉग और टीटीएल: क्षेत्र द्वारा भंडारण, स्वचालित गुमनामी।
13) कॉन्फ़िगरेशन उदाहरण
13. 1 NGINX (रूटिंग + लिमिट + हेडर)
nginx http {
map $http_x_request_id $req_id { default $request_id; }
limit_req_zone $binary_remote_addr zone=per_ip:10m rate=20r/s;
server {
listen 443 ssl http2;
server_name api. example. com;
Security add_header Strict-Transport-Security "max-age = 31536000" always;
add_header X-Content-Type-Options nosniff;
Limit on IP location/api/v1/{
limit_req zone=per_ip burst=40 nodelay;
proxy_set_header X-Request-Id $req_id;
proxy_set_header X-Client-Ip $remote_addr;
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_pass http://payments_v1;
}
Canary traffic by header location/api/v2/{
if ($http_x_canary = "1") { proxy_pass http://payments_v2; }
proxy_pass http://payments_v1;
}
}
}
13. 2 दूत (JWT, दर सीमा, रिट्रीट, बाहरी)
yaml static_resources:
listeners:
- name: https address: { socket_address: { address: 0. 0. 0. 0, port_value: 443 } }
filter_chains:
- filters:
- name: envoy. filters. network. http_connection_manager typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. network. http_connection_manager. v3. HttpConnectionManager route_config:
name: local_route virtual_hosts:
- name: payments domains: ["api. example. com"]
routes:
- match: { prefix: "/api/v1/payments" }
route:
cluster: payments_v1 timeout: 5s retry_policy:
retry_on: "connect-failure,refused-stream,5xx,retriable-status-codes"
num_retries: 2 per_try_timeout: 2s http_filters:
- name: envoy. filters. http. jwt_authn typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. http. jwt_authn. v3. JwtAuthentication providers:
main:
issuer: "https://auth. example. com/"
remote_jwks: { http_uri: { uri: "https://auth. example. com/.well-known/jwks. json" } }
forward: true rules:
- match: { prefix: "/api/" }
requires: { provider_name: "main" }
- name: envoy. filters. http. ratelimit
- name: envoy. filters. http. router clusters:
- name: payments_v1 connect_timeout: 0. 5s type: STRICT_DNS lb_policy: ROUND_ROBIN load_assignment: { cluster_name: payments_v1, endpoints: [{ lb_endpoints: [{ endpoint: { address: { socket_address: { address: payments, port_value: 8080 }}}}]}] }
outlier_detection: { consecutive_5xx: 5, interval: 5s, base_ejection_time: 30s }
14) चेकलिस्ट
मार्ग रिलीज से पहले
- प्रमाणीकरण योजना (JWT/JWKS, कुंजी, TTL कैश)।
- टाइमआउट/रिट्रेज ़/आइडेम्पोटेंसी कॉन्फ़िगर किए गए हैं।
- सीमाएं: प्रति-आईपी, प्रति-कुंजी, प्रति-मार्ग; साथी कोटा।
- अनुरोध/प्रतिक्रिया योजना का सत्यापन।
- 'ट्रेस-आईडी', पीआईआई मास्क के साथ लॉग और निशान।
- SLO/अलर्ट और डैशबोर्ड।
- भू-नियम/अनुपालन/आयु की जाँच की गई।
लेनदेन और भुगतान
- PSP स्मार्ट रूटिंग: नियम, प्राथमिकताएं, Feilover।
- समान-विधि को किनारे पर जांचा जाता है।
- ग्राहक के लिए पारदर्शी स्थिति और त्रुटि कोड (कोई कच्चा पीएसपी कोड नहीं)।
रिलीज़
- कैनरी/एबी और किल-स्विच, रोलबैक योजना।
- नए संस्करण के लिए छाया यातायात, मेट्रिक्स की तुलना।
- लोड परीक्षण और p95 लक्ष्य।
15) गुणवत्ता मैट्रिक्स (न्यूनतम)
मार्गों द्वारा उपलब्धता/एसएलओ; त्रुटि दर 5xx/4xx।
लेटेंसी p50/p95/p99 (बाहरी और आंतरिक)।
रीट्री/टाइमआउट/सर्किट इवेंट (शोर स्तर)।
कैश हिट-अनुपात और आरपीएस बचत।
दर-सीमा हिट और गिराए गए अनुरोध।
पीएसपी-रूटिंग केपीआई: सफलताएं, टीटीडब्ल्यू, फीलओवर का प्रतिशत, कमीशन।
16) एंटी-पैटर्न
एक कुल सीमा "हर चीज के लिए"।
"इंस्टेंट" बिना किसी झटके के पीछे हट जाता है (तूफान की तीव्रता)।
सामान्यीकरण और विश्वसनीय प्रॉक्सी सूची के बिना 'एक्स-फॉरवर्ड-फॉर' ट्रस्ट करें।
p95 (झूठी सकारात्मकता) को छोड़ कर कठिन समय।
कठिन परिवर्तन जो संगतता को तोड़ ते हैं।
PII/PAN/रहस्य के साथ लॉग।
एक ही डोमेन/नीति के तहत आंतरिक और बाहरी एपीआई मिलाएं।
17) प्रतिक्रिया पैटर्न और त्रुटियां (माइक्रोकॉपी)
429 बहुत से अनुरोध: "अनुरोध सीमा तक पहुंच गया। एन सेकंड में दोहराएं या साथी के कार्यालय में कोटा बढ़ाएं"
401/403: "टोकन अमान्य/समाप्त हो गया है। कृपया पुनः साइन इन करें"
408/504: "सेवा उम्मीद से अधिक समय तक जवाब देती है। अनुरोध स्वीकार नहीं किया गया था"
Idempotency-संघर्ष: "इस Idempotency-Key के साथ एक अनुरोध पहले से ही संसाधित किया गया है (स्थिति: सफलता/विफलता)।"
18) कार्यान्वयन प्रक्रिया (चरण)
1. रूट मॉडल: डोमेन/पथ/क्षेत्र मानचित्र।
2. सुरक्षा नीतियां: TLS/mTLS, WAF, AuthN/Z, कुंजी/JWKS।
3. विश्वसनीयता: टाइमआउट, रिट्रे, आइडेम्पोटेंसी, सर्किट-ब्रेकर।
4. अवलोकन: लॉग/मैट्रिक्स/निशान, सहसंबंध।
5. कैश/पर्फ: एज/माइक्रो-कैश, संपीड़न, कनेक्शन पूल।
6. भुगतान मार्ग: नियम, परीक्षण, निगरानी।
7. रिलीज: कैनरी/शैडो, किल-स्विच, रोलबैक प्लान।
8. अनुपालन/भू: देश फिल्टर, डेटा भंडारण, आयु।
अंतिम धोखा पत्र
सख्त परिधि (TLS/mTLS, WAF, सीमा) + प्रबंधित यातायात (रेट्राई, सर्किट, कैनरी)।
→ के किनारे पर सत्यापन और परिवर्तन दोषों से कम "अंदर" हैं।
ट्रेस-आईडी और पीआईआई मास्क के साथ अवलोकन एक विकल्प नहीं है, लेकिन एक मानक है।
स्मार्ट भुगतान रूटिंग और अनुपालन भू iGaming के लिए महत्वपूर्ण हैं।
सत्यापन और अभाव नीति - भागीदारों के लिए पूर्वानुमेयता।