GH GambleHub

gRPC vs REST в iGaming

1) iGaming bağlamı: neden bir protokol seçmelisiniz

İGaming platformu aynı anda hizmet eder:
  • gerçek zamanlı: oran beslemeleri, canlı bahisler, akış kuponu/maç durumları, oyuncu limitleri, anlık kilitler;
  • İşlemler: para yatırma/çekme, oranların hesaplanması, bonuslar, KYC/AML, destek biletleri;
  • partner/B2B entegrasyonları: oyun sağlayıcıları, ödeme ağ geçitleri, bağlı kuruluşlar, düzenleyiciler.

P99 gecikme süresi, zirveler altında istikrar (maçlar, finaller), entegrasyon kolaylığı ve işlem maliyeti protokole bağlıdır.


2) Kısa: REST ve gRPC nedir

REST/HTTP/JSON: insan tarafından okunabilir, evrensel. Tarayıcılar/mobil SDK'lar, önbelleğe alınmış CDN'ler, hata ayıklaması kolay ile harika çalışır.
gRPC (HTTP/2 + Protobuf): ikili sözleşmeler, müşteri otojenerasyonu, uni/çift yönlü akış, çoklama, katı şemalar. Ağ üzerinden servis hizmeti onun öğesidir.


3) iGaming'de uygun olan yerlerde

gRPC - Güçlü Yönler

Canlı yayınlar ve izleme: akış katsayıları, eşleşme olayları, limitler (sunucu akışı/bidi).
Dahili mikro hizmetler: risk motoru, teklif, sahtekarlık karşıtı puanlama, denge/cüzdan - p99/CPU gereksinimleri.
Kısa mesajlarla büyük RPS cirosu (bayt başına düşük fiyat, küçük GC basıncı).
Takımlar ve versiyonlar arasında sıkı sözleşmeler (geriye dönük compat ile Protobuf).

REST - Güçlü yönler

Genel ve ortak API'ler: basit entegrasyon (curl/Postman), gRPC yığını olmayan ortaklar.
Tarayıcı önü: yerel, proxy yok ;/ ETag/304/CDN önbellek desteği.
Uzun ömürlü kaynaklar: oyun katalogları, profiller, raporlar, yapılandırmalar.
Düzenleyici yüklemeler: Ağ geçitleri olmadan JSON/CSV uyumluluğu.


4) Gecikme ve iş hacmi

gRPC, yük boyutu (Protobuf) ve serileştirme/çölleştirme maliyetleri açısından daha ekonomiktir ve kısa ve sık çağrılardan yararlanır.
REST/JSON, yüke %30-200 ekler, ancak genel GET'lerde önbelleğe alma ve CDN'den yararlanır.

Öneri: DC/inter-service içinde - varsayılan olarak gRPC; Dışarıda - REST, gerçek zamanlı hariç.


5) Gerçek zamanlı: canlı oranlar ve alıntılar

Seçenekler:
  • gRPC sunucu akışı/bidi: güncellemeler için sürekli akış, geri basınç, pencere kontrolü.
  • Önünüzde ikili bir protokole ihtiyacınız varsa, tarayıcı için gRPC-Web (Elçi aracılığıyla).
  • WebSocket/SSE + REST: gRPC-Web ekosistemi uygun olmadığında veya proxy olmadan temiz bir tarayıcıya ihtiyacınız olduğunda.

Desen: içeride - gRPC tekliften API ağ geçidine/kenarına akar; Dışa doğru - Ön taraf için WebSocket/SSE, CRUD için REST.


6) Idempotence, sipariş ve teslimat garantileri

REST: Ağ geçidinde POST için 'Idempotency-Key', zaman aşımında yeniden besleme; Anahtar - TTL ile Redis/DB'de.
gRPC: client/balancer level retrays + idempotent methods ('retriable _ status _ codes') and sequence/versioning in streaming messages.
Oranları hesaplamak için, bir çürük üzerinde Inbox/Outbox + UPPERT kullanın (veri tekilleştirme ve sipariş ile ilgili makalelere bakın) - protokolün kendisi bir iş etkisi garanti etmez.


7) Güvenlik ve uyumluluk

Taşıma: Hem kafes hem de kenarda TLS/mTLS; gRPC'de mTLS'yi (SPIFFE/SPIRE) her yerde tutmak daha kolaydır.
Kimlik doğrulama: Her iki seçenek de OAuth2/OIDC ('Authorization: Bearer' içindeki JWT), gRPC için - meta verileri destekler.
İmzalar/NMAS: B2B REST entegrasyonlarında daha yaygındır.
PII/logging: binary payload gRPC'lerin yanlışlıkla günlüklere "dökülmesi'daha zordur, ancak yine de kılık değiştirin.
Düzenleyiciler genellikle insan boşaltma gerektirir - REST/JSON daha uygundur.


8) Gözlemlenebilirlik ve çalışma

Her iki format da OpenTelemetry ile harika çalışır: 'Traceparent' (REST )/gRPC interseptörleri.
gRPC zengin durumlar/römorklar verir; REST - tanıdık HTTP kodları ve CDN/WAF katmanları.
Ağ geçidinde: hız sınırlayıcı/kota, devre kesici, aykırı tespit, hata enjeksiyonu - eşit olarak kullanılabilir (Elçi/Kong/NGINX/Traefik).


9) Uyumluluk ve ön

Temiz bir tarayıcı gRPC'yi kutudan çıkarmaz - gRPC-Web veya REST/WS/SSE.
Mobil istemciler (iOS/Android) - gRPC istemcileri mevcuttur, ancak SDK boyutu ve mağaza politikası bazen REST'e iter.


10) Karışık Çevre Mimari Desenler

10. 1 Çift cephe stratejisi

İç (doğu-batı): gRPC.
Dışa doğru (kuzey-güney): REST + WS/SSE.
Uç uca dönüştürme (Elçi): bir arka uç, iki müşteri.

yaml
Envoy: REST ↔ gRPC transcoding (фрагмент)
typed_per_filter_config:
envoy.filters.http.grpc_json_transcoder:
"@type": type.googleapis.com/envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder proto_descriptor: "descriptors.pb"
services: ["betting.BetsService"]
print_options:
preserve_proto_field_names: true

10. 2 gRPC-Web

Elçi Tarayıcı (gRPC-Web) - gRPC hizmeti. Canlı widget'lar ve yönetici UI'leri için uygundur.


11) Sözleşmeler ve API Evrimi

Protobuf (gRPC)

Yalnızca mesajları genişletin (yeni etiketlerle alanlar ekleyin), semantik ve türleri değiştirmeyin.

proto syntax = "proto3";
package betting;

service BetsService {
rpc PlaceBet(PlaceBetRequest) returns (PlaceBetResponse);
rpc LiveOdds(EventsFilter) returns (stream OddsUpdate); // серверный стрим
}

message PlaceBetRequest {
string account_id = 1;
string event_id  = 2;
double stake   = 3;
string selection = 4;
string idempotency_key = 5;
}

OpenAPI (REST)

'/v1 'yoluna göre sürüm oluşturma, yeni alanlar yalnızca isteğe bağlıdır.

yaml openapi: 3.0.3 info: { title: Bets API, version: "1.0" }
paths:
/v1/bets:
post:
operationId: placeBet parameters:
- in: header name: Idempotency-Key required: true schema: { type: string }
requestBody:
required: true content:
application/json:
schema:
$ref: '#/components/schemas/PlaceBetRequest'
responses:
'201': { description: Created }
components:
schemas:
PlaceBetRequest:
type: object required: [accountId, eventId, stake, selection]
properties:
accountId: { type: string }
eventId:  { type: string }
stake:   { type: number, format: double }
selection: { type: string }

12) iGaming Kılıfları: Ne Seçilmeli

Alt sistemÖnerilen protokol
Canlı oranlar/limitlerDahili olarak gRPC akışı; Dış WS/SSE veya gRPC-Web
Oran hesaplama/aktivasyonİçeride gRPC (düşük gecikme süresi), dışarıda REST
KYC/AML, belge yüklemeREST (uyumluluk, büyük gövdeler/çok parçalı)
Ödemeler/nakitREST dış (NMAC/imzalar), gRPC iç orkestrasyon
Oyun Kataloğu/İçeriğiREST + CDN
Yönetici/BI/RaporlarREST/GraphQL
Oyun sağlayıcıları ile entegrasyonlarSağlayıcının gerektirdiği (genellikle REST/WebSocket); gRPC'de iç çeviri
Dahili lastikler/antifrodegRPC + Etkinlik Aracısı (Kafka/NATS)

13) Üretim nüansları

Zaman Aşımları/Geri Çekilmeler

gRPC: 'per _ try _ timeout', limit 'max _ girişimleri', sadece idempotent RPC'ler için retrays.
REST: üstel geri dönüş, titreme, ağ geçidinde 429/5xx politikaları.

Gövde/yöntem kısıtlaması

REST: request size limits, 'Content-Type' doğrulaması.
gRPC: mesaj boyutu sınırları, akış kontrolü.

Önbelleğe alma

REST: 'Cache-Control', 'ETag'.
gRPC: uygulama/ağ geçidi düzeyinde önbellek (unary için), akışlar için - anlık görüntüler/dilimler.

Gözlemlenebilirlik

Zorunlu: korelasyon günlüğü (istek kimliği), açıklıklar, rota/yöntem hatası metrikleri, p50/p95/p99 dağılımı.


14) Anti-desenler

"gRPC'deki her şeyi yeniden yazın've doğrudan öne vermeye çalışın - gRPC-Web/proxy olmadan, bu tarayıcıyı kıracaktır.
Genel web uç noktaları sadece gRPC'lerdir - ortaklar düşecektir.
REST yoklaması aracılığıyla canlı yayınları yayınlayın - ağ aşırı yüklemesi/arka uç ve yavaş tırnak işaretleri.
Idempotent olmayan işlemleri (oran oluşturma/ödeme) müşteri düzeyinde geri çekin.
/ sequence sürümleri yerine olay sırası için fiziksel zamana güvenin.


15) Protokol seçim kontrol listesi

  • Gerçek zamanlı veya CRUD/ortak trafik?
  • Tarayıcı/İş Ortağı veya Mikro Hizmetler/Mobil SDK Müşterileri?
  • Akış gerektirir (sunucu/bidi)?
  • Çevrede CDN'lere/önbelleklere mi ihtiyacınız var?
  • p99 SLO'lar ve hata bütçesi nedir?
  • Raporlama formatları (JSON/CSV) için bir düzenleyici gerekliliği var mı?
  • Idempotency ve veri tekilleştirme planı tanımlandı mı?
  • API ağ geçidi/mesh ile entegrasyon hazır (mTLS, limitler, çeviri)?
  • Sürüm oluşturma ve uyumluluk stratejisi onaylandı mı?
  • Maç günü zirveleri için gösterge panoları/uyarılar ve test oyun kitapları hazır mı?

16) Mini Playbooks (Oyun Günleri)

Zirveyi eşleştir: Çift RPS canlı yayınları - p99 ve mesaj kaybını (akışları) değerlendirin.
Sağlayıcı hatası: upstream fall - CB/outlier ortadan kaldırılmalı, ön kısım son anlık görüntüye indirgenmelidir.
Ağ Geçidi gerilemesi - gRPC↔REST çevirisini devre dışı bırak - Geri dönüşün (WS/SSE) çalıştığını doğrulayın.
Ağ gecikmeleri/WAN: yapay olarak RTT'yi yükseltin - zaman aşımı ve geri çekilme uyarlamasını kontrol edin.
Büyük Gövdeler (KYC): sınırları kontrol edin/birden fazla indirme yapın, özetleyin.


17) Toplam

Kümenin içinde: gRPC - performans, katı sözleşmeler ve akış için varsayılan.
Çevre: REST (ve gerçek zamanlı UI için WS/SSE) - geniş uyumluluk için varsayılan.
Bir API ağ geçidi (kod dönüştürme, sınırlar, kimlik doğrulama) ve servis ağı (mTLS, trafik ilkesi) aracılığıyla dünyaları birleştirme.
Başarı - net bir ayrımla karışık bir mimaride: içeride akış/düşük gecikme süresi, dışarıda rahatlık ve çok yönlülük.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.