GH GambleHub

Brama i routing API

1) Brama API rola w architekturze

Brama API jest jednym punktem wejścia w mikroservice. Czy on jest:
  • Żądania tras (ścieżka/nagłówek/geo/waga/wersja).
  • Chroni obwód (TLS/mTLS, WAF, DDoS, limity szybkości, authN/Z).
  • Kontroluje ruch (kanaryjski/AB, cień/lustro, wyłącznik, retras, timeouts).
  • Normalizuje protokoły (REST/gRPC/WebSocket), nagłówki, kody.
  • Obserwacje (kłody, mierniki, ślady, korelacja).
  • Transformuje i waliduje (JSON/XML, normalizacja, schemat-walidacja).

Dla iGaming, jest to również geo-zgodność (blokowanie kraju/wieku), inteligentne routing płatności i odpowiedzialne zasady gry na krawędzi.

2) Opcje routingu

Ścieżka: '/api/v1/payments/→ payments-svc'.
Siedziba gospodarza: "eu. api. przykład. com → eu-edge „,” psp. przykład. com → psp-proxy '.
Oparty na nagłówku: 'X-Client: partner-A' → backend partnera; "Akceptuj: wniosek/grpc'.
Routing geograficzny: według IP/ASN/country (RODO/zakazy lokalne, opóźnienia).
Ważony/kanaryjski: „90%” na starą, „10%” na nową wersję; szybki zwrot.
Roszczenie-routing: ма 'СВА. roszczeń. poziom/rola/region "(na przykład, wysokie-rolkowe → limity premii).
Upadłość: aktywa/aktywa-zobowiązania między centrum danych/chmurą a PSP.

3) Bezpieczeństwo na obwodzie

TLS wszędzie: TLS 1. 2 + na zewnątrz, mTLS wewnątrz (shlyuz „servisy”).
OAuth2/JWT: weryfikacja podpisu, audyt „exp/nbf/aud/scope”, rotacja JWKS; pamięć podręczna walidacji z TTL.
HMAC: podpis nadwozia dla haków/płatności.
Klucze API: dla klientów systemu; powiązać się z kontyngentami/rolami.
WAF: podstawowe zasady (wtrysk, anomalie protokołu), wielkość ciała, odmowa listy krajów.
Ochrona DDoS: ograniczenie połączenia, pliki cookie SYN, limit stawek na punkcie końcowym IP/key/.
Zero-Trust: obowiązkowa polityka (SPIFFE/SPIRE, tożsamość usług), zasada najmniejszych praw.
Prywatność: edycja PII w logach, maskowanie PAN/IBAN, zasady przechowywania.

4) Limity, kwoty i ochrona przed wybuchami

Модела: wiadro tokenowe, wiadro nieszczelne, okno stałe/przesuwne.
Granice: per-IP, per-key, per-user, per-route.

Opcjonalnie:
  • Pęknięcie + trwałe (np. „50 rps burst”, „10 rps sustain”).
  • Ochrona Retry-Budget i Slow-Loris (przeczytaj timeouts).
  • Kwota według dnia/miesiąca dla partnerów.

5) Przekształcenia i walidacja

Normalizacja nagłówków (trace-id, locale, client-id).
Żądanie/odwzorowanie odpowiedzi.
Walidacja schematu (OpenAPI/JSON Schema) przed proxingiem - wczesna awaria 4xx.
Kompresja/' Accept-Encoding ', buforowanie (patrz poniżej).

6) Buforowanie i wydajność

Pamięć podręczna krawędzi dla katalogów, metadanych publicznych, konfiguracji (TTL, 'ETag '/' If-None-Match').
Mikro-cache 1-5 s dla gorącego GET (zmniejsza obciążenie szczytowe).
Pamięć podręczna negatywna krótka (przy 404/pusta) - ostrożna.
Wnioski o zabezpieczenie i konkurencyjne wnioski o repliki na poziomie p95> próg.

7) Timeouts, rekolekcje, odporność

Timeouts: podłączyć/odczytać/zapisać oddzielnie; rozsądne p95-landmarks.
Retrai: metody idempotentne (GET/PUT) z backoff + jitter; retry-budget.
Idempotencja POST: „Idempotency-Key” + deduplikacja usługi/bramy.
Circuit-Breaker: przez błędy/opóźnienia; w połowie otwartego procesu.
Grodzisko/izolacja basenowa z góry rzeki.

8) Wersioning i kompatybilność

Metody:
  • URI: '/v1/... '(proste, ale „hałaśliwe” trasy).
  • Nagłówek/treść-negocjacje: "Akceptuj: aplikacja/vnd. ap. v2 + json ".
  • Funkcja-flagi/serwer - dla niewielkiej kompatybilności zmian.

Zasady: SemVer, okno wsparcia (na przykład 'v1' = 12-18 miesięcy), harmonogram depryfikacji, kompatybilne odpowiedzi dla rozszerzeń (dodawanie pól nie łamie).

9) Obserwowalność i kontrola jakości

Korelacja: wymagane 'traceparent'/' x-request-id'; Wyrzucamy go.
OpenTelemetry: RPS/p50/p95/p99/5xx/4xx, nasycenie, metryki zdarzeń wstecznych/obwodowych.
Kłody: strukturalne JSON; przebranie PII; poziomy według kodu.
Pobieranie próbek śladowych: podstawowy cel 5-10% + dla błędów/powolny.
SLO/alerty: drogą/klientami (czas uptime, opóźnienie, błąd).

10) Zwolnij zarządzanie ruchem

Niebiesko-zielony przełącznik DNS/LB.
Kanaryjski: udział wagi/segmenty (region, partner, rola).
Cień/lustro: kopia ruchu do nowej wersji bez odpowiedzi na klienta.
Kill-switch: flag, aby szybko wyłączyć problematyczną funkcję upstream/feature.

11) Inteligentne routing płatności (iGaming)

Zasady wyboru PSP: geo, waluta, kwota, stopa ryzyka, dostępność, prowizja.
PSP awaryjny: automatyczne przejście na '5xx/timeout'.
Reguła tej samej metody: zwraca/wyjścia za pomocą oryginalnej metody - sprawdź na krawędzi.
ID płatności: klucz do 'viaId + kwota + waluta + cel'.
Przejrzystość ETA: brama dodaje statusy i przyczyny awarii (nie kody PSP).

12) Polityka międzyregionalna i przestrzeganie przepisów

Filtry geograficzne: białe/czarne listy krajów, ograniczenia wiekowe, zakresy IP.
Dane rezydenta: trasa do klastrów regionalnych (RODO/prawa lokalne).
Logi i TTL: przechowywanie według regionu, automatyczna anonimizacja.

13) Przykłady konfiguracji

13. 1 NGINX (routing + limit + nagłówki)

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 Wysłannik (JWT, limit kursu, ponowne próby, 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) Listy kontrolne

Przed zwolnieniem drogi

  • Schemat uwierzytelniania (JWT/JWKS, klucze, pamięć podręczna TTL).
  • Timeouts/Retrays/Idempotency są skonfigurowane.
  • Granice: per-IP, per-key, per-route; kwoty partnerskie.
  • Zatwierdzenie systemu składania wniosków/odpowiedzi.
  • Kłody i ślady z "trace-id', maski PII.
  • SLO/wpisy i deska rozdzielcza.
  • Sprawdzone zasady geologiczne/zgodność/wiek.

Transakcje i płatności

  • PSP Smart Routing: Zasady, priorytety, Feilover.
  • Ta sama metoda jest sprawdzana na krawędzi.
  • Przejrzyste statusy i kody błędów dla klienta (brak surowego kodu PSP).

Wydania

  • Canary/AB i kill-switch, plan wsteczny.
  • Ruch cieni do nowej wersji, porównanie metryk.
  • Badania obciążenia i cele p95.

15) Wskaźniki jakości (minimum)

Dostępność/SLO na trasach; szybkość błędu 5xx/4xx.
Opóźnienie p50/p95/p99 (zewnętrzne i wewnętrzne).
Retry/timeout/circuit events (poziom hałasu).
Współczynnik trafienia w pamięci podręcznej i oszczędności RPS.
Tempo limity trafień i wycofane żądania.
PSP-routing KPI: sukcesy, TtW, procent feilover, prowizja.

16) Anty-wzory

Jeden całkowity limit „za wszystko”.
„Natychmiastowy” odwrót bez jittera (nasilenie burzy).
Zaufanie 'X-Forwarded-For' bez normalizacji i zaufanej listy proxy.
Trudne czasy z wyłączeniem p95 (fałszywe pozytywy).
Ciężkie transformacje, które łamią kompatybilność.
Dzienniki z PII/PAN/tajemnicami.
Wymieszaj wewnętrzne i zewnętrzne interfejsy API w tej samej domenie/polityce.

17) Wzorce i błędy reakcji (mikrokopia)

429 Zbyt wiele żądań: "Limit żądania osiągnięty. Powtórz w N sekund lub zwiększyć kwotę w gabinecie partnera"

401/403: "Token jest nieprawidłowy/wygasł. Proszę zalogować się ponownie"

408/504: "Usługa odpowiada dłużej niż oczekiwano. Wniosek nie został przyjęty"

Idempotency-conflict: „Wniosek z tym Idempotency-Key został już rozpatrzony (status: sukces/porażka)”.

18) Proces wdrażania (kroki)

1. Model trasy: mapa domeny/ścieżki/regionu.
2. Polityka bezpieczeństwa: TLS/mTLS, WAF, authN/Z, klucze/JWKS.
3. Niezawodność: timeouts, retrays, idempotency, circuit-breaker.
4. Obserwowalność: kłody/mierniki/ślady, korelacja.
5. Cache/perf: krawędź/mikro-pamięć podręczna, kompresja, puli połączeń.
6. Routing płatności: zasady, testy, monitorowanie.
7. Wydania: kanaryjski/cień, kill-switch, plan rollback.
8. Zgodność/geo: filtry krajowe, przechowywanie danych, wiek.

Końcowy arkusz oszustwa

Ścisły obwód (TLS/mTLS, WAF, limity) + zarządzany ruch (retrai, obwód, kanaryjski).
Walidacja i transformacje na krawędzi → są mniejsze niż wady „wewnątrz”.
Obserwowalność z maskami śladowymi i PII nie jest opcją, ale standardem.
Inteligentne routing płatności i geo zgodności mają kluczowe znaczenie dla iGaming.
Polityka wersioning i deprywacji - przewidywalność dla partnerów.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.