IGaming의 REST, gRPC 및 Webhooks: 패턴 및 패턴 방지
전체 기사
1) 프로토콜 맵: 누가 책임을 져야하는지
REST-TP/JSON을 통한 범용 동기 요청. 투명한 캐시, 간단한 디버깅, B2B 통합 및 관리자 API에 편리합니다.
gRPC-HTT/2를 통한 고성능 바이너리 RPC: 낮은 대기 시간, 스트림, 하드 회로. 핫 머니 경로 (지갑/정착), 내부 서비스 및 수명이 긴 스트림 (실시간) 에 좋습니다.
웹 후크는 수신자에서 발신자로의 콜백입니다. 개시자가 항상 결과를 기다리는 사람은 아닌 이벤트 ("돈이 떨어졌다", "일한 한도") 에 사용됩니다.
황금 규칙:- 돈은 단단한 불변량과 demmpotency를 가진 동기식 RPC (REST/gRPC) 로 진행됩니다. 원격 측정 및 비즈니스 이벤트-비동기 적으로 (webhooks + 이벤트 버스).
2) 일반적인 경로 및 권장 채널
3) 계약 지향 디자인
3. 1 REST (조각)
POST/v1/베팅/승인
헤더: X-Idempotency-Key: bet _ r _ 8c12 _ 1, X-Trace-ID: tr _ a1b2
{
"sesion _ id": "s _ 456", "bet _ id": "b _ 001", "round _ id": "r _ 8c12", "mount": {"amount": 2. 00, "통화": "EUR"}
}
→ 200 {"상태": "승인 됨", "hold _ id": "h _ zz1"}
409
{"코드": "DUPLICATE", "메시지": "이미 승인 된", "재시도 가능": 거짓, "trace _ id": "tr _ a1b2"}3. 2 gRPC (원형, 단순화)
프로토 구문 = "proto3";
패키지 지갑. v1;
메시지 Money {int64 minor _ units = 1; 문자열 통화 = 2; }//cents 메시지 AuthorizeBetReq {문자열 세션 _ id = 1; 문자열 bet _ id = 2; 문자열 round _ id = 3; 금액 = 4; 문자열 demempotency _ key = 5}
메시지 AuthorizeBetRes {문자열 상태 = 1; 문자열 보유 _ id = 2}
서비스 지갑 {
rpc AuthorizeBet (AuthorizeBetReq) 리턴 (AuthorizeBetRes);
rpc SettleBet (SettleReq) 반품 (SettleRes);
}3. 웹 후크 3 개 (구독 예)
POST https ://provesser. 예/웹 후크
{
"주제": "지갑. 신용. (PHP 3 = 3.0.6, PHP 4) 예/저널, "" 비밀 ":", "버전": "1. 2"
}
POST https ://rgs. 예/저널
헤더: X-Signature: sha256 =..., X-Trace-ID: tr _ a1b2
{
"이벤트 _ 유형": "지갑. 신용. 확인 "," 스키마 _ 버전 ":" 1. 2. 0, "", 이벤트 _ id ":" uIS "," 페이로드 ": {" player _ id ":" p _ 19f3 "," amount ": {" minor _ units ": 1460," 통화 ":" EUR "}}
}4) 이념과 일관성
쓰기 작업 (REST/gRPC 메타 데이터) 에는 항상 'X-Idempotency-Key' 가 필요합니다. 재생 → 동일한 답변.
주요 구성은 비즈니스 매개 변수 (예: 'bet _ id + 양') 와 관련이 있습니다.
긴 프로세스에 대한 사가 (승인 → 커밋/잠금 → 정산 → 크레딧).
전송/CDC: 이벤트는 거래 근처에서 원자 적으로 캡처되어 외부에 게시됩니다.
5) 수정 및 호환성
REST- '/v1/... '+' Deprencation/Sunset '헤드; gRPC- '패키지 지갑. v1 '; 이벤트- '스키마 _ 버전' 본문 + 스키마 레지스트리.
SemVer: 마이너-옵션/새 엔드 포인트 필드; 메이저 - 새로운 경로/패키지, 마이그레이션에 관한 이벤트의 "이중 문자".
주요 버전이 없으면 통화 상태의 의미를 바꾸지 마십시오.
6) 운송의 안전
모든 S2S의 mTLS; 웹 후크-바디 시그니처 (HMAC/EdUSA) + 타임 스탬프 및 유효성 창.
범위 제한 (OAuth2 CC) 및 브랜드/지역 주요 세분화.
제로 트러스트: 네트워크 정책, 단기 토큰, Vault/HSM, 중요한 행동에 대한 WORM 감사.
7) 관찰 및 SLO
REST, gRPC 메타 데이터 및 웹 후크의 엔드 투 엔드 'trace _ id'.
측정 항목: p50/p95/p99 대기 시간, 코드 별 오류율, 처리량, 지연 대기열.
SLO 최소 (랜드 마크):- 지갑 p95 '<150 ms' (권한/정착), REST 공개 B2B p95 '<300 ms', Webhooks는 '<5 min' 99 번째 백분위 수 인 "Lost/Duplicated Settlements" = 0을 전달했습니다.
8) Retrai, 백오프 및 배송 주문
REST/gRPC: 지수 백오프, 지터, 지속 시간 제한 (마감일/시간 초과).
웹 후크: '2xx' 로의 반복 가능한 전달; 키 ('player _ id/round _ id') 또는 수신기의 중복 제거 순서를 유지합니다.
폭풍 방지: 병렬 퇴각 제한, 회로 차단기, 속도 제한.
9) 통합 패턴
패턴 A: "돈 동기식, 이벤트 비동기식"
1. RGS → 월렛 (gRPC/REST) '승인' → '결제/신용'.
2. 동시에 '베팅이 게시됩니다. 버스에 정착하면 공급자는 웹 후크 영수증을받습니다.
플러스: 빠른 돈, 관찰. 마이너스: 두 개의 윤곽이 필요합니다.
패턴 B: "스트리밍 라이브"
gRPC 스트리밍 (테이블 상태, 베팅 창) 을 통한 라이브 코어 브리지.
현금 거래 - 별도의 단일 RPC; 이벤트-버스/웹 후크.
플러스: 라이브 상태의 최소 지연.
패턴 C: "B2B 공개 REST"
카탈로그/보너스/제휴사/보고서-커서 페이지 매김, 필터, ETag가있는 REST.
또한: 간단한 파트너 통합.
10) 반 패턴 (적기)
웹 후크를 통해서만 현금 거래 (동기 확인 없음).
'Idempotency-Key' → 중복 차단/크레딧이 없습니다.
Outbox/CDC를 우회하는 이벤트 게시 (이벤트가 손실 됨).
서명되지 않은/타임 스탬프 웹 후크 → 대체.
'지역/테넌트' 태그없이 한 채널에서 다른 지역의 PII/돈을 혼합합니다.
웹 후크의 큰 이진 페이로드 (브레이크 리트레이 및 한계).
제로 열화: 웹 후크의 붕괴는 돈 계산을 차단합니다.
마감일이없고 백오프가없는 gRPC-막힌 연결, 자원 고갈.
11) 점검표
건축가/플랫폼
- demempotency, 이벤트가있는 gRPC/REST의 돈-웹 후크/버스.
- 모든 돈 경로에서 전송/CDC.
- '/vN '달력 스키마 레지스트리; 우울증/일몰 프로세스.
- mSL + 웹 후크 서명; 브랜드/지역 당 비서.
- SLO- 대시 보드 p95/p99, 오류율, 웹 후크 지연.
- DR/xaoc 운동: 이중 배달, 주문 외, 지역 덤프.
공급자/RGS
- 'X-Trace-ID' 및 'X-Idempotency-Key' 보내기
- 백오프 및 중복 제거 retreas; 웹 후크를 다시 전달할 준비가되었습니다.
- 계약 버전 업데이트; 'Deprencation/Sunset' 에 반응합니다.
- 오류 코드 및 시간별 로그/메트릭스.
12) 날카로운 경우를위한 미니 솔루션
Safari/ITP 및 타사 제한: 돈-호스트 (REST/gRPC) 에서 iFrame 컨텐츠는 'post 메시지' 를 통해 통신합니다. iFrame 이외의 호스트의 웹 후크.
멀티 브랜드: 태그 '테넌트 _ id/브랜드 _ id/라이센스' 인 헤더 및 이벤트; 키/인증서는 별도입니다.
큰 버스트 (토너먼트): 웹 후크 전에-DLQ가있는 버퍼/큐; 과부하가 걸렸을 때- "새 세션 없음 "/" 비 코어 후크 일시 정지".
13) SLO 지향 경고의 예
지갑. p95> 150 ms 5 분 연속 승인.
'DUPLICATE/IDEMPOTENCY _ MISMATCH' 오류> 0. 10 분 만에 5%.
웹 후크 지연 p99> 180 c 테마 'bet. 정착'.
지갑 용 Kafka> 30 초의 소비자 지연. 신용. '.
14) 철수
iGaming의 REST, gRPC 및 웹 후크는 교환 가능한 기술이 아니라 동일한 운영 모델의 일부입니다.
REST/gRPC는 낮은 대기 시간, demempotency, 엄격한 SLA와 같은 통화 불변량에 의해 유지됩니다.
웹 후크/버스는 이벤트, 원격 측정, 통합 등 투명성과 규모를 제공합니다.
아웃 박스/CDC, 버전 지정, 서명 및 관찰 성을 추가하고 돈이 빠르고 안전하게 움직이고 이벤트가 손실되지 않으며 업그레이드가 통증이없는 아키텍처를 얻으십시오.
