API Ağ Geçidi ve Yönlendirme
1) Mimaride API Ağ Geçidi Rolü
Bir API ağ geçidi, mikro hizmetlere tek bir giriş noktasıdır. Öyle mi:- Routes requests (path/headers/geo/weight/version).
- Çevreyi korur (TLS/mTLS, WAF, DDoS, hız sınırları, authN/Z).
- Trafiği kontrol eder (kanarya/AB, gölge/ayna, devre kesici, retras, zaman aşımları).
- Protokolleri (REST/gRPC/WebSocket), başlıkları ve kodları standartlaştırır.
- Gözlemler (günlükler, metrikler, izler, korelasyon).
- Dönüştürür ve doğrular (JSON/XML, normalleştirme, şema doğrulama).
IGaming için aynı zamanda coğrafi uygunluk (ülke/yaş engelleme), akıllı ödeme yönlendirmesi ve kenardaki sorumlu oyun politikalarıdır.
2) Yönlendirme seçenekleri
Yol tabanlı:'/api/v1/payments/> payments-svc '.
Sunucu tabanlı: 'eu. api. örnek. com - eu-edge ',' psp. örnek. com - psp-proxy '.
Başlık tabanlı: 'X-Client: partner-A' - partner arka ucu; 'Accept: application/grpc'.
Coğrafi yönlendirme: IP/ASN/ülkeye göre (GDPR/yerel yasaklar, gecikme).
Ağırlıklı/Kanarya: Eski sürümde '%90', yeni sürümde '%10'; hızlı geri dönüş.
Talep yönlendirme: по 'JWT. talepler. Katman/rol/bölge '(örneğin, yüksek silindir> premium limitler).
Yük devretme: Veri merkezi/bulut ve PSP arasındaki varlık-varlık/varlık-yükümlülük.
3) Çevre güvenliği
TLS her yerde: TLS 1. Dışta 2 +, içinde mTLS (shlyuz↔servisy).
OAuth2/JWT: imza doğrulama, denetim 'exp/nbf/aud/scope', JWKS rotasyonu; TTL ile doğrulama önbelleği.
HMAC: Web kitapları/ödemeler için vücut imzası.
API anahtarları: sistem istemcileri için; kotalar/roller ile ilişkilendirilir.
WAF: Temel kurallar (enjeksiyon, protokol anomalileri), vücut büyüklüğü, ülkelerin listesini reddetmek.
DDoS koruması: bağlantı sınırlaması, SYN çerezleri, IP/anahtar/uç nokta için hız sınırı.
Sıfır Güven: Zorunlu politikalar (SPIFFE/SPIRE, hizmet kimlikleri), en az hak ilkesi.
Gizlilik: Günlüklerde PII düzenleme, PAN/IBAN maskeleme, depolama politikası.
4) Patlamalara karşı sınırlar, kotalar ve koruma
Модели: belirteç kovası, sızdıran kova, sabit/sürgülü pencere.
Kenarlıklar: IP başına, anahtar başına, kullanıcı başına, rota başına.
- Burst + sürekli (örn. '50 rps patlama', '10 rps sürdürme').
- Retry-Budget ve Yavaş-Loris koruması (okuma zaman aşımları).
- Ortaklar için gün/ay kotası.
5) Dönüşümler ve doğrulama
Başlıkları normalleştirin (trace-id, locale, client-id).
İstek/Yanıt eşlemesi.
Proxying öncesi şema doğrulama (OpenAPI/JSON Schema) - erken 4xx hatası.
Sıkıştırma/' Kabul-Kodlama ', önbelleğe alma (aşağıya bakın).
6) Önbelleğe alma ve performans
Dizinler, genel meta veriler, yapılandırmalar için kenar önbelleği (TTL, 'ETag'/' If-None-Match').
Sıcak GET için mikro önbellek 1-5 s (pik yükü azaltır).
Negatif önbellek kısa (404/boş) - dikkatli.
Riskten korunma istekleri ve p95> eşiğindeki replikalara rekabetçi talepler.
7) Zaman aşımları, geri çekilmeler, esneklik
Zaman aşımları: Ayrı ayrı bağlayın/okuyun/yazın; Makul p95-yer işaretleri.
Retrai: backoff + jitter ile idempotent yöntemler (GET/PUT); Yeniden deneme bütçesi.
POST idempotency: 'Idempotency-Key' + servis/ağ geçidi veri tekilleştirme.
Devre Kesici: hatalar/gecikme ile; Yarı açık deneme.
Yukarı akış tarafından Bulkhead/Havuz izolasyonu.
8) Sürüm oluşturma ve uyumluluk
Yöntemler:- URI:'/v1/... '(basit, ama "gürültülü" yollar).
- Başlık/İçerik-Müzakere: 'Kabul: Uygulama/vnd. app. v2 + json '.
- Özellik bayrakları/sunucu özelliği - küçük değişiklik uyumluluğu için.
Politika: SemVer, destek penceresi (örneğin, 'v1' = 12-18 ay), depriction schedule, uzantılar için uyumlu yanıtlar (alan ekleme kesilmez).
9) Gözlemlenebilirlik ve kalite kontrolü
Korelasyon: 'Traceparent'/' x-request-id' gereklidir; aşağı atarız.
OpenTelemetry: RPS/p50/p95/p99/5xx/4xx, doygunluk, yeniden deneme/devre olay metrikleri.
Günlükler: yapısal JSON; PII gizlemek; Kod bazında seviyeler.
İzleme örneklemesi: hatalar/yavaş için temel %5-10 + hedef.
SLO/uyarılar: rotalara/istemcilere göre (çalışma süresi, gecikme, hata).
10) Trafik Yönetimini Serbest Bırakın
Mavi-Yeşil DNS/LB anahtarı.
Kanarya: ağırlık payı/segmentler (bölge, partner, rol).
Gölge/Ayna: İstemciye yanıt vermeden trafiğin yeni sürüme kopyalanması.
Kill-switch: sorunlu upstream/özelliği hızlı bir şekilde devre dışı bırakmak için bayrak.
11) Akıllı ödeme yönlendirme (iGaming)
PSP seçim kuralları: coğrafi, para birimi, miktar, risk oranı, kullanılabilirlik, komisyon.
Yük Devretme PSP: '5xx/timeout' konumunda otomatik geçiş.
Aynı yöntem kuralı: orijinal yöntemle döner/çıkar - kenarda kontrol edin.
Ödeme Kimliği: 'userId + tutar + para birimi + amaç' üzerindeki anahtar.
ETA saydamlığı: ağ geçidi durum ve hata nedenleri ekler (PSP kodları değil).
12) Bölgeler arası politikalar ve uyum
Coğrafi filtreler: Ülkelerin beyaz/siyah listeleri, yaş kısıtlamaları, IP aralıkları.
Yerleşik veriler: bölgesel kümelere yönlendirme (GDPR/yerel yasalar).
Günlükler ve TTL: Bölgelere göre depolama, otomatik anonimleştirme.
13) Yapılandırma örnekleri
13. 1 NGINX (yönlendirme + limit + başlıklar)
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 Elçi (JWT, oran limiti, yeniden denemeler, aykırı)
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) Kontrol listeleri
Rota serbest bırakılmadan önce
- Kimlik doğrulama şeması (JWT/JWKS, anahtarlar, TTL önbellek).
- Zaman aşımları/Retrays/Idempotency yapılandırılmıştır.
- Sınırlar: IP başına, anahtar başına, rota başına; ortak kotaları.
- İstek/yanıt şemasının doğrulanması.
- Günlükleri ve izleri ile 'trace-id', PII maskeleri.
- SLO/uyarılar ve gösterge tablosu.
- Coğrafi kurallar/uyumluluk/yaş kontrol edildi.
İşlemler ve Ödemeler
- PSP Akıllı Yönlendirme: Kurallar, Öncelikler, Feilover.
- Aynı yöntem kenarda kontrol edilir.
- Müşteri için şeffaf durumlar ve hata kodları (ham PSP kodu yok).
Bültenler
- Kanarya/AB ve kill-switch, geri alma planı.
- Yeni sürüme gölge trafik, metriklerin karşılaştırılması.
- Yük testi ve p95 hedefleri.
15) Kalite metrikleri (minimum)
Güzergahlara göre kullanılabilirlik/SLO; Hata oranı 5xx/4xx.
Gecikme süresi p50/p95/p99 (harici ve dahili).
Yeniden deneme/zaman aşımı/devre olayları (gürültü seviyesi).
Önbellek isabet oranı ve RPS tasarrufu.
Hız limiti isabetleri ve düştü istekleri.
PSP yönlendirmeli KPI'lar: başarılar, TtW, feilover yüzdesi, komisyon.
16) Anti-desenler
"Her şey için'bir toplam sınır.
"Anında" jitter olmadan geri çekilir (fırtına yoğunlaşması).
Normalleştirme ve güvenilir proxy listesi olmadan 'X-Forwarded-For'a güvenin.
P95 hariç zor zaman aşımları (yanlış pozitifler).
Uyumluluğu bozan sert dönüşümler.
PII/PAN/sırları ile günlükleri.
Dahili ve harici API'yi aynı etki alanı/politika altında karıştırın.
17) Yanıt kalıpları ve hataları (mikrokopi)
429 Çok Fazla İstek: "İstek sınırına ulaşıldı. N saniye içinde tekrarlayın veya ortağın ofisinde kotayı artırın"
401/403: "Belirteç geçersiz/süresi dolmuş. Lütfen tekrar imzalayın"
408/504: "Servis beklenenden daha uzun yanıt veriyor. Talep kabul edilmedi"
Idempotency-conflict: "Bu Idempotency-Key ile bir istek zaten işlenmiştir (durum: başarı/başarısızlık)".
18) Uygulama süreci (adımlar)
1. Rota modeli: etki alanı/yol/bölge haritası.
2. Güvenlik politikaları: TLS/mTLS, WAF, authN/Z, anahtarlar/JWKS.
3. Güvenilirlik: zaman aşımları, retrays, idempotency, devre kesici.
4. Gözlemlenebilirlik: günlükler/metrikler/izler, korelasyon.
5. Önbellek/perf: kenar/mikro önbellek, sıkıştırma, bağlantı havuzları.
6. Ödeme yönlendirme: kurallar, testler, izleme.
7. Sürümler: kanarya/gölge, kill-switch, geri alma planı.
8. Uyumluluk/coğrafi: ülke filtreleri, veri depolama, yaş.
Son hile sayfası
Sıkı çevre (TLS/mTLS, WAF, limitler) + yönetilen trafik (retrai, devre, kanarya).
Doğrulamanın kenarındaki doğrulama ve dönüşümler "içeride" kusurlardan daha azdır.
Trace-id ve PII maskeleri ile gözlemlenebilirlik bir seçenek değil, bir standarttır.
Akıllı ödeme yönlendirme ve uyumluluk jeosu iGaming için kritik öneme sahiptir.
Sürüm oluşturma ve yoksunluk politikası - ortaklar için öngörülebilirlik.