GH GambleHub

API Gateway și rutare

1) API Gateway Rol în arhitectură

Un gateway API este un singur punct de intrare în microservicii. El este:
  • Cereri de rute (după traseu/antet/geo/greutate/versiune).
  • Protejează perimetrul (TLS/mTLS, WAF, DDoS, limitele ratei, authN/Z).
  • Controlează traficul (canar/AB, umbră/oglindă, întrerupător de circuit, retras, timeout).
  • Standardizează protocoalele (REST/gRPC/WebSocket), anteturile, codurile.
  • Observă (busteni, metrici, urme, corelație).
  • Transformă și validează (JSON/XML, normalizare, validare schemă).

Pentru iGaming, este, de asemenea, geo-conformitate (blocare țară/vârstă), rutare de plată inteligentă și politici de joc responsabil pe margine.

2) Opțiuni de rutare

Pe cale: "/api/v1/payments/ → payments-svc'.
Bazat pe gazdă: "eu. api. exemplu. com → eu-edge ', "psp. exemplu. com → psp-proxy ".
Header-based: „X-Client: partener-A” → partener backend; „Accept: cerere/grpc”.
Geo-rutare: prin IP/ASN/țară (GDPR/interdicții locale, latență).
Ponderat/Canar: „90%” pe vechiul, „10%” pe noua versiune; revenire rapidă.
Revendicare-rutare: по 'JWT. revendicări. nivel/rol/regiune "(de exemplu, high-roller → limite premium).
Failover: active-active/active-răspundere între centrul de date/cloud și PSP.

3) Securitatea perimetrului

TLS peste tot: TLS 1. 2 + pe exterior, mTLS în interior (shlyuz↔servisy).
OAuth2/JWT: verificarea semnăturii, auditul „exp/nbf/aud/scope”, rotația JWKS; cache de validare cu TTL.
HMAC: Semnătura corporală pentru webhook-uri/plăți.
chei API: pentru clienții sistemului; asociat cu cote/roluri.
WAF: reguli de bază (injecție, anomalii de protocol), dimensiunea corpului, lista de negare a țărilor.
Protecție DDoS: limitarea conexiunii, cookie-uri SYN, limită de rată pe IP/cheie/punct final.
Zero-Trust: politici obligatorii (SPIFFE/SPIRE, identități de serviciu), principiul celor mai puține drepturi.
Confidențialitate: editare PII în jurnale, mascare PAN/IBAN, politică de stocare.

4) Limite, cote și protecție împotriva exploziilor

Модели: cupă token, găleată cu scurgeri, fereastră fixă/glisantă.
Frontiere: per-IP, per-cheie, per-utilizator, per-rută.

Opţional:
  • Explozie + susţinută (de ex. „50 rps izbucni”, „10 rps susține”).
  • Retry-Budget și Slow-Loris de protecție (citește timeout).
  • Cota de zi/lună pentru parteneri.

5) Transformări și validare

Normalizați anteturile (trace-id, locale, client-id).
Cerere/Răspuns-mapare.
Schema de validare (OpenAPI/JSON Schema) înainte de proxying - precoce 4xx eșec.
Compresie/' Accept-Encoding ', caching (vezi mai jos).

6) Caching și performanță

Memorie cache pentru directoare, metadate publice, configurații (TTL, „ETag ”/„ If-None-Match”).
Micro-cache 1-5 s pentru hot GET (reduce sarcina maximă).
Scurt-cache negativ (la 404/gol) - atent.
Solicitări de acoperire a riscurilor și cereri competitive de replici la pragul p95>.

7) Timeout, retrageri, reziliență

Timeout: conectați/citiți/scrieți separat; p95-repere rezonabile.
Retrai: metode idempotente (GET/PUT) cu backoff + jitter; reîncercați-buget.
POST idempotency: 'Idempotency-Key' + service/gateway deduplication.
Întrerupător de circuit: prin erori/latență; proces pe jumătate deschis.
Perete etanș/Izolarea piscinei prin amonte.

8) Versioning și compatibilitate

Metode:
  • URI: '/v1/... '(rute simple, dar „zgomotoase”).
  • Antet/Conținut-Negociere: 'Acceptă: cerere/vnd. app. v2 + json '.
  • Caracteristică-steaguri/capacitatea de server - pentru compatibilitate minor-schimbare.

Politică: SemVer, fereastră de asistență (de exemplu, 'v1' = 12-18 luni), program de depricție, răspunsuri compatibile pentru extensii (adăugarea câmpurilor nu se rupe).

9) Observabilitatea și controlul calității

Corelaţie: "traceparent "/" x-request-id' necesar; Îl aruncăm în jos.
OpenTelemetry: RPS/p50/p95/p99/5xx/4xx, saturație, retry/circuit metrica evenimentelor.
Busteni: structural JSON; deghizare PII; niveluri de cod.
Urme de eșantionare: de bază 5-10% + țintă pentru erori/lent.
SLO/alerte: pe rute/clienti (uptime, latenta, eroare).

10) Release Managementul traficului

Comutator DNS/LB albastru-verde.
Canare: cota de greutate/segmente (regiune, partener, rol).
Shadow/Mirror: copie a traficului către noua versiune fără a răspunde clientului.
Kill-switch: pavilion pentru a dezactiva rapid problema în amonte/caracteristică.

11) rutare de plată inteligentă (iGaming)

Reguli de selecție PSP: geo, valută, sumă, rată de risc, disponibilitate, comision.
Failover PSP: tranziție automată la '5xx/timeout'.
Regula aceleiași metode: retururi/ieșiri prin metoda originală - verificați la margine.
ID-ul de plată: cheie pe 'userId + sumă + monedă + scop'.
Transparența ETA: gateway-ul adaugă stări și cauze de eșec (nu coduri PSP).

12) Politici transregionale și conformitate

Geo-filtre: liste albe/negre de țări, restricții de vârstă, intervale IP.
Date rezidente: rutare către clustere regionale (GDPR/legi locale).
Jurnale și TTL: stocare pe regiuni, anonimizare automată.

13) Exemple de configurare

13. 1 NGINX (rutare + limită + antete)

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 Trimisul (JWT, limita ratei, retries, outlier)

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) Liste de verificare

Înainte de eliberarea traseului

  • Schema de autentificare (JWT/JWKS, chei, TTL cache).
  • Timeouts/Retroys/Idempotency sunt configurate.
  • Limite: per-IP, per-cheie, per-rută; cote partenere.
  • Validarea schemei de solicitare/răspuns.
  • Jurnale și urme cu 'trace-id', măști PII.
  • SLO/alerte și tablou de bord.
  • Geo-reguli/conformitate/vârstă verificate.

Tranzacții și plăți

  • PSP Smart Routing: Reguli, Priorități, Feilover.
  • Aceeași metodă este verificată la margine.
  • Stări transparente și coduri de eroare pentru client (fără cod PSP brut).

Lansări

  • Canare/AB și kill-switch, plan de rollback.
  • Trafic de umbre la noua versiune, compararea metricii.
  • Testarea sarcinii și țintele p95.

15) Măsurători de calitate (minim)

Disponibilitate/SLO pe rute; rata de eroare 5xx/4xx.
Latență p50/p95/p99 (externă și internă).
Retry/timeout/circuit evenimente (nivel de zgomot).
Cache hit-raport și economii RPS.
Rata-limită hit-uri și a scăzut cererile.
KPI-uri de rutare PSP: succese, TtW, procent de feilover, comision.

16) Anti-modele

O limită totală „pentru orice”.
„Instant” se retrage fără jitter (intensificarea furtunii).
Trust 'X-Forwarded-For' fără normalizare și listă de proxy de încredere.
Timeout-uri dure, cu excepția p95 (fals pozitive).
Transformări dure care sparg compatibilitatea.
Jurnale cu PII/PAN/secrete.
Se amestecă API intern și extern sub același domeniu/politică.

17) Modele de răspuns și erori (microcopie)

429 Prea multe cereri: "Limita de solicitare atinsă. Repetați în N secunde sau creșteți cota în biroul partenerului"

401/403: "Tokenul este nevalid/expirat. Vă rugăm să vă conectați din nou"

408/504: "Serviciul răspunde mai mult decât era de așteptat. Cererea nu a fost acceptată"

Idempotency-conflict: „O cerere cu această cheie de Idempotency a fost deja procesată (statut: succes/eșec)”.

18) Procesul de implementare (pași)

1. Model de traseu: domeniu/cale/regiune hartă.
2. Politici de securitate: TLS/mTLS, WAF, authN/Z, chei/JWKS.
3. Fiabilitate: timeout, retroys, idempotency, circuit-breaker.
4. Observabilitate: busteni/metrici/urme, corelatie.
5. Cache/perf: edge/micro-cache, compresie, bazine de conexiune.
6. Rutarea plăților: reguli, teste, monitorizare.
7. Versiuni: canar/umbră, kill-switch, plan rollback.
8. Conformitate/geo: filtre de țară, stocarea datelor, vârsta.

Foaie de trișat finală

Perimetru strict (TLS/mTLS, WAF, limite) + trafic gestionat (retrai, circuit, canar).
Validarea și transformările la marginea → sunt mai mici decât defectele „în interior”.
Observabilitatea cu măști trace-id și PII nu este o opțiune, ci un standard.
Rutarea inteligentă a plăților și geo-ul de conformitate sunt esențiale pentru iGaming.
Politica de versionare și privare - predictibilitate pentru parteneri.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Telegram
@Gamble_GC
Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.