REST, gRPC i Webhooks w iGaming: Wzory i anty-wzory
Pełny artykuł
1) Mapa protokołu: kto jest odpowiedzialny za co
REST - uniwersalne żądania synchroniczne przez HTTP/JSON. Przezroczysty pamięć podręczna, proste debugowanie, wygodne dla integracji B2B i admin API.
gRPC - wysokowydajny RPC binarny na HTTP/2: niskie opóźnienia, strumienie, obwody twarde. Dobre dla gorących ścieżek pieniężnych (portfel/rozliczenie), usług wewnętrznych i długotrwałych strumieni (na żywo).
Haki są zwrotami zwrotnymi od odbiorcy do nadawcy. Używane do zdarzeń („pieniądze spadły”, „limit pracował”), gdzie inicjator nie zawsze jest tym, który czeka na wynik.
Złota zasada:- Pieniądze idą na synchroniczny RPC (REST/gRPC) z twardymi niezmiennikami i idempotencją. Telemetria i imprezy biznesowe - asynchronicznie (webhooks + event bus).
2) Typowe ścieżki i zalecane kanały
3) Projekt zorientowany na zamówienie
3. 1 ODPOCZYNEK (fragmenty)
POST/v1/zakłady/autoryzacja
Nagłówki: X-Idempotency-Key: bet_r_8c12_1, X-Trace-Id: tr_a1b2
{
„session_id":"s_456,” „bet_id":"b_001,” „round_id":"r_8c12,” „kwota „: {” kwota”: 2. 00, „waluta”:” EUR”}
}
→ 200 {"status": "autoryzowany", "hold _ id':" h _ zz1 "}
409
{"kod": "DUPLICATE", "message": "Bet already authorized", "retryyyable": false, "trace _ id':" tr _ a1b2 "}3. 2 gRPC (protobuf, uproszczony)
składnia proto = „proto3”;
pakiet portfela. v1;
wiadomość Money {int64 minor_units = 1; waluta smyczkowa = 2; }//cent komunikat AutorzyBetReq {string session_id=1; bet_id=2 ciągu; round_id=3 ciągu; Kwota pieniądza = 4; ciąg idempotency_key=5;}
wiadomość AutorzyBetRes {status łańcucha = 1; ciąg hold_id=2;}
serwis Portfel {
rpc Autor Bet (AutorzyBetReq) zwraca (AutorzyBetRes);
rpc SetاBet (SetاReq) zwraca (Set, Res);
}3. 3 Haki internetowe (przykład subskrypcji)
POST https ://provider. przykład/haki internetowe
{
"temat ":" portfel. kredytu. OK”, „callback_url":"https://rgs. przykład/journal "," secret ":", "version": "1. 2"
}
POST https ://rgs. przykład/dziennik
Nagłówki: X-Signature: sha256 =..., X-Trace-Id: tr_a1b2
{
"event_type":"wallet. kredytu. OK”, „schema_version":"1. 2. 0, „” event_id":"uuid, „” ładunek użytkowy „: {” player _ id': „p _ 19f3”, „kwota”: {„minor _ units”: 1460, „waluta”: „EUR”}}
}4) Idempotencja i spójność
Zawsze wymaga 'X-Idempotence-Key' w operacjach zapisu (metadane REST/gRPC). Powtórka → ta sama odpowiedź.
Skład klucza jest związany z parametrami biznesowymi (na przykład 'bet _ id + amount').
Sagi dla długich procesów (autoryzacja → commit/lock → rozrachunek → kredyt).
Outbox/CDC: Wydarzenia są przechwytywane atomowo w pobliżu transakcji i publikowane zewnętrznie.
5) Wersioning i kompatybilność
RESZTA - '/v1/... głowice '+' deprecacja/zachód słońca '; gRPC - 'pakiet portfela. v1 "; events - 'schema _ version' in bodies + schema registry.
SemVer: pomniejsze - opcjonalne/nowe pola punktów końcowych; major - nowa ścieżka/pakiet, „podwójna litera” wydarzeń na migracji.
Nigdy nie zmieniaj semantyki monetarnych statusów bez większej wersji.
6) Bezpieczeństwo transportu
mTLS na wszystkich S2S; dla webhooks - podpis nadwozia (HMAC/EdDSA) + znacznik czasu i okna ważności.
Ograniczenie zakresu (OAuth2 CC) i segmentacja klucza marki/regionu.
Zero-trust: polityka sieciowa, tokeny krótkotrwałe, skarbiec/HSM, audyt działań krytycznych WORM.
7) Obserwowalność i SLO
End-to-end 'trace _ id' w metadanych REST, gRPC i hakach webowych.
Metryki: p50/p95/p99 opóźnienia, szybkość błędów według kodów, przepustowość, kolejki opóźnień.
minimum SLO (punkty orientacyjne):- Portfel p95 '<150 ms' (Authorize/Settle), REST public B2B p95 '<300 ms', Webhooks dostarczył '<5 min' 99th percentile, „Lost/Duplikat Settlements” = 0.
8) Retrai, backoff i zamówienie dostawy
REST/gRPC: wykładnicze backoff, jitter, czas trwania (termin/timeout).
Haki internetowe: powtarzalna dostawa do '2xx'; utrzymanie kolejności za pomocą klucza ('player _ id/round _ id') lub deduplikacji przy odbiorniku.
Anty-burze: równoległy limit odwrotu, wyłącznik, ograniczenie prędkości.
9) Wzorce integracji
Wzór A: „Synchroniczne pieniądze, imprezy asynchroniczne”
1. RGS → Portfel (gRPC/REST) „autoryzuj” → „rozrachunek/kredyt”.
2. Równolegle, 'zakład jest publikowany. ustawił się do autobusu, a dostawca otrzymuje pokwitowanie.
Plus: szybkie pieniądze, obserwowalność. Minus: potrzebujesz dwóch konturów.
Wzór B: „Streaming live”
Życiowy rdzeń „Bridge” za pośrednictwem transmisji strumieniowej gRPC (statusy tabeli, okno zakładów).
Transakcje gotówkowe - oddzielne unarious RPC; wydarzenia - w autobusie/hakach internetowych.
Plus: minimalne opóźnienie statusów żywych.
Wzór C: „B2B public REST”
Katalogi/bonusy/partnerzy/raporty - REST z kursorem pagination, filtry, ETag.
Plus: prosta integracja partnerska.
10) Anty-wzory (czerwone flagi)
Transakcje gotówkowe tylko za pośrednictwem haków internetowych (bez synchronicznego potwierdzenia).
Brak 'Idempotence-Key' → duplikat debetów/kredytów.
Publikacja wydarzeń omijających outbox/CDC (wydarzenia są stracone).
Unsigned/timestamped webhooks → substytucja.
Mieszanie PII/pieniędzy różnych regionów w jednym kanale bez znaczników „region/najemca”.
Duży ładunek binarny w hakach internetowych (przekładki i limity).
Zero degradacji: upadek haków internetowych blokuje obliczanie pieniędzy.
gRPC bez terminu i bez backoff - zablokowane połączenia, wyczerpanie zasobów.
11) Listy kontrolne
Architekt/platforma
- Pieniądze przez gRPC/REST z idempotencją, wydarzenia - webhooks/bus.
- Outbox/CDC na wszystkich ścieżkach pieniężnych.
- rejestr „/vN ”(„ schema ”); Proces deprecacji/zachodu słońca.
- podpisy mTLS + webhook; tajemnice dla każdej marki/regionu.
- SLO-dashboards p95/p99, wskaźnik błędów, webhook-lag.
- DR/xaoc-ćwiczenia: podwójna dostawa, poza zamówieniem, wysypisko regionu.
Dostawca/RGS
- Wysyłanie "X-Trace-Id' i" X-Idempotency-Key ".
- Wycofywanie i deduplikowanie; jest gotowy do ponownego dostarczenia haków internetowych.
- Aktualizacja wersji umowy; reagowanie na „Deprecation/Sunset”.
- Dzienniki/mierniki według kodu błędu i czasu.
12) Mini rozwiązania dla ostrych skrzyń
Safari/ITP i ograniczenia osób trzecich: pieniądze - w hostie (REST/gRPC), treści iFrame komunikują się poprzez „postMessage”; haki z hosta innego niż iFrame.
Multi-brand: tags 'tenant _ id/brand _ id/license' w nagłówkach i wydarzeniach; klucze/certyfikaty są oddzielne.
Duże wybuchy (turnieje): przed hakami webowymi - bufor/kolejka z DLQ; po przeciążeniu - „brak nowych sesji „/” zatrzymanie haków innych niż rdzeń ”.
13) Przykłady wpisów zorientowanych na SLO
Portfel. Autoryzować p95> 150 ms 5 min z rzędu.
BŁĘDY „DUPLIKAT/IDEMPOTENCY _ MISMATCH”> 0. 5% w 10 min.
Webhook lag p99> 180 c na temat „bet. settled”.
Opóźnienie konsumenckie w Kafce> 30 s dla 'portfela. kredyt ".;
14) Wycofanie
REST, gRPC i haki internetowe w iGaming nie są technologiami wymiennymi, ale częściami tego samego modelu operacyjnego.
REST/gRPC są w posiadaniu stałych monetarnych: niskie opóźnienia, idempotencja, ścisłe SLA.
Haki/autobusy zapewniają przejrzystość i skalę: wydarzenia, telemetria, integracje.
Dodaj outbox/CDC, wersioning, podpisy i obserwowalność - i uzyskać architekturę, w której pieniądze poruszają się szybko i bezpiecznie, wydarzenia nie są tracone, a aktualizacje są bezbolesne.
