REST, gRPC ve iGaming'deki Webhooks: Desenler ve Anti-Desenler
Tam makale
1) Protokol haritası: kim ne için sorumludur
REST - HTTP/JSON üzerinden evrensel senkron istekler. Şeffaf önbellek, basit hata ayıklama, B2B entegrasyonları ve yönetici API'si için uygundur.
gRPC - HTTP/2 üzerinden yüksek performanslı ikili RPC: düşük gecikme süresi, akışlar, sert devreler. Sıcak para yolları (cüzdan/yerleşme), dahili hizmetler ve uzun ömürlü akışlar (canlı) için iyidir.
Webhook'lar alıcıdan gönderene yapılan geri çağrılardır. Olaylar için kullanılır ("para düştü", "limit çalıştı"), burada başlatıcı her zaman sonucu bekleyen kişi değildir.
Altın kural:- Para, sabit değişmezler ve idempotency ile senkronize RPC'ye (REST/gRPC) devam eder. Telemetri ve iş etkinlikleri - eşzamansız olarak (webhooks + etkinlik otobüsü).
2) Tipik yollar ve önerilen kanallar
3) Sözleşme odaklı tasarım
3. 1 REST (parçalar)
POST/v1/bets/authorized
Başlıklar: X-Idempotency-Key: bet_r_8c12_1, X-Trace-Id: tr_a1b2
{
"session_id":"s_456," "bet_id":"b_001," "round_id":"r_8c12," miktar ": {" miktar ": 2. 00, "para birimi":" EUR"}
}
^ 200 {"durum": "yetkili", "hold _ id":'h _ zz1 "}
409
{"kod": "DUPLICATE", "mesaj": "Bet already authorized", "retryable": false, "trace _ id":'tr _ a1b2 "}3. 2 gRPC (protobuf, basitleştirilmiş)
Proto syntax = "proto3";
Paket cüzdan. v1;
Mesaj Money {int64 minor_units = 1; string currency = 2; }//cents mesajı AuthorizedBetReq {string session_id=1; Dize bet_id=2; Dize round_id=3; Para miktarı = 4; string idempotency_key=5;}
MessageBetRes {string status = 1; string hold_id=2;}
Servis Cüzdanı {
rpc YetkilendirmeBet (YetkilendirmeBetReq) döndürür (YetkilendirmeBetRes);
rpc SettleBet (SettleReq) döndürür (SettleRes);
}3. 3 Webhooks (abonelik örneği)
POST https ://provider. örnek/webhooks
{
"Konu ":" Cüzdan. Kredi. Tamam," "callback_url":"https://rgs. example/journal, "" secret ":", "version": "1. 2"
}
POST https ://rgs. örnek/dergi
Üstbilgiler: X-İmza: sha256 =..., X-Trace-Id: tr_a1b2
{
"event_type":"wallet. Kredi. Tamam," "schema_version":"1. 2. 0", "event_id":"uuid," "payload ": {"player _ id ": "p _ 19f3 ", "amount ": {" minor _ units": 1460," currency":" EUR"}}
}4) Idempotency ve tutarlılık
Yazma işlemlerinde her zaman 'X-Idempotency-Key' gerektirir (REST/gRPC meta verileri). Replay - aynı cevap.
Anahtar bileşimi iş parametrelerine bağlıdır (örneğin, 'bet _ id + amount').
Uzun süreçler için Sagas (yetkilendirmek - işlemek/kilitlemek - yerleşmek - kredi).
Outbox/CDC: Olaylar işlemin yakınında atomik olarak yakalanır ve harici olarak yayınlanır.
5) Sürüm oluşturma ve uyumluluk
REST -'/v1/... '+' Amortisman/Günbatımı '-heads; gRPC - 'paket cüzdan. v1 '; events - 'schema _ version' in bodies + schema registry.
SemVer: minör - isteğe bağlı/yeni uç nokta alanları; Major - yeni bir yol/paket, göçle ilgili olayların "çift harfi".
Parasal durumların semantiğini ana versiyon olmadan asla değiştirmeyin.
6) Taşımacıların güvenliği
Tüm S2S mTLS; Web kitapları için - gövde imzası (HMAC/EdDSA) + zaman damgası ve geçerlilik pencereleri.
Kapsam kısıtlaması (OAuth2 CC) ve marka/bölge anahtar segmentasyonu başına.
Sıfır güven: ağ politikaları, kısa ömürlü belirteçler, Vault/HSM, kritik eylemlerin WORM denetimi.
7) Gözlemlenebilirlik ve SLO
REST, gRPC meta verileri ve webhook'larda uçtan uca 'trace _ id'.
Metrikler: p50/p95/p99 gecikme süresi, kodlara göre hata oranı, işlem hacmi, gecikme kuyrukları.
SLO minimum (yer işaretleri):- Cüzdan p95 '<150 ms' (Yetkilendirme/Yerleşme), REST genel B2B p95 '<300 ms', Webhooks teslim '<5 dk' 99th persentil, "Kayıp/Çoğaltılmış Yerleşimler" = 0.
8) Retrai, geri alma ve teslimat siparişi
REST/gRPC: üstel geri kapanma, titreme, süre sınırı (son tarih/zaman aşımı).
Webhooks: '2xx'e tekrarlanabilir teslimat; Siparişin anahtarla tutulması ('player _ id/round _ id') veya alıcıda veri tekilleştirme.
Anti-fırtınalar: paralel geri çekilme limiti, devre kesici, hız limiti.
9) Entegrasyon kalıpları
Desen A: "Para senkron, olaylar asenkron"
1. RGS Cüzdan (gRPC/REST) 'yetkilendirir' - 'yerleşir/kredi'.
2. Paralel olarak, 'bahis yayınlanır. Otobüse yerleşti ve sağlayıcı bir webhook makbuzu aldı.
Artı: hızlı para, gözlemlenebilirlik. Eksi: iki kontura ihtiyacınız var.
Desen B: "Canlı yayın"
Canlı çekirdek ↔ Bridge üzerinden gRPC akışı (tablo durumları, bahis penceresi).
Nakit işlemleri - ayrı tek RPC; Olaylar - otobüs/webhooks.
Artı: canlı durumların minimum gecikmesi.
Desen C: "B2B genel REST"
Kataloglar/bonuslar/bağlı kuruluşlar/raporlar - İmleç sayfalama, filtreler, ETag ile REST.
Artı: basit ortak entegrasyonu.
10) Anti-desenler (kırmızı bayraklar)
Nakit işlemleri yalnızca webhook'lar aracılığıyla yapılır (eşzamanlı onay olmadan).
'Idempotency-Key' yok - yinelenen borçlar/krediler.
Giden kutusu/CDC'yi atlayarak olayları yayınlama (olaylar kaybolur).
İmzasız/zaman damgalı webhooks - yerine koyma.
Farklı bölgelerin PII/paralarının 'bölge/kiracı' etiketleri olmadan tek bir kanalda karıştırılması.
Webhook'larda büyük ikili yük (retray ve limitleri aşın).
Sıfır bozulma: Web kitaplarının düşmesi paranın hesaplanmasını engeller.
Son teslim tarihi ve geri dönüş olmadan gRPC - sıkışmış bağlantılar, kaynak tükenmesi.
11) Kontrol listeleri
Mimar/Platform
- idempotency ile gRPC/REST tarafından para, olaylar - webhooks/bus.
- Tüm para yollarında outbox/CDC.
- '/vN 'и şema kaydı; Kullanımdan kaldırma/Sunset süreci.
- mTLS + webhook imzaları; Marka/bölge başına gizlilik.
- SLO-panoları p95/p99, hata oranı, webhook-lag.
- DR/xaoc-egzersizleri: çift teslimat, sipariş dışı, bölgenin dökümü.
Sağlayıcı/RGS
- 'X-Trace-Id've' X-Idempotency-Key 'gönderiliyor.
- Geri alma ve veri tekilleştirme geri çekiliyor; Webhook'ları yeniden teslim etmeye hazır.
- Sözleşme sürümlerini güncelleyin; 'Amortisman/Günbatımı'na tepki.
- Hata kodu ve zamana göre günlükler/metrikler.
12) Keskin durumlar için mini çözümler
Safari/ITP ve üçüncü taraf kısıtlamaları: para - ana bilgisayarda (REST/gRPC), iFrame içeriği 'Mesaj sonrası'ile iletişim kurar; Web hooks iFrame dışında bir ana bilgisayardan.
Çok markalı: etiketler 'tenant _ id/brand _ id/license' başlıklarda ve olaylarda; Anahtarlar/sertifikalar ayrıdır.
Büyük patlamalar (turnuvalar): webhooks öncesi - DLQ ile tampon/kuyruk; Aşırı yüklendiğinde -'yeni oturum yok "/" çekirdek olmayan kancaları duraklat ".
13) SLO odaklı uyarılara örnekler
Cüzdan. Yetkilendirme p95> 150 ms 5 dakika üst üste.
'DUPLICATE/IDEMPOTENCY _ MISMATCH' hataları> 0. 10 dakikada %5.
Webhook lag p99> 180 c teması üzerine 'bet. setted'.
Kafka'da tüketici gecikmesi> 30 s for 'wallet. Kredi. '.
14) Çekilme
REST, gRPC ve iGaming'deki webhook'lar değiştirilebilir teknolojiler değil, aynı işletim modelinin parçalarıdır.
REST/gRPC parasal değişmezler tarafından tutulur: düşük gecikme süresi, idempotency, sıkı SLA'lar.
Webhooks/bus şeffaflık ve ölçek sağlar: olaylar, telemetri, entegrasyonlar.
Giden kutusu/CDC, sürüm oluşturma, imzalar ve gözlemlenebilirlik ekleyin - ve paranın hızlı ve güvenli bir şekilde hareket ettiği, olayların kaybolmadığı ve yükseltmelerin ağrısız olduğu bir mimari elde edin.
