REST, GRPC ва Webhooks дар IGaming: Намунаҳо ва анти-намунаҳо
Мақолаи пурра
1) Харитаи протокол: кӣ барои чӣ масъул аст
REST - дархостҳои ҳамаҷонибаи синхронӣ аз HTTP/JSON. Кэши шаффоф, debugging оддӣ, қулай барои ҳамгироии B2B ва admin API.
GRPC - RPC дутарафаи баландсифат аз болои HTTP/2: таъхири кам, ҷараёнҳо, схемаҳои сахт. Хуб барои роҳҳои пулии гарм (ҳамён/ҳал), хадамоти дохилӣ ва ҷараёнҳои дарозмуддат (зинда).
Webhooks ин зангҳо аз қабулкунанда ба ирсолкунанда мебошанд. Барои чорабиниҳо истифода мешавад ("пул афтод", "лимит кор кард"), ки дар он ташаббускор на ҳама вақт интизори натиҷа аст.
Қоидаи тиллоӣ:- Пул ба RPC-и синхронӣ (REST/GRPC) бо инвариантҳои сахт ва idempotency меравад. Чорабиниҳои телеметрӣ ва тиҷорӣ - асинхронӣ (webhooks + event bus).
2) Роҳҳои маъмулӣ ва каналҳои тавсияшуда
3) Тарҳи ба шартнома нигаронидашуда
3. 1 Истироҳат (пораҳо)
POST/v1/гарав/ваколатдор
Сарлавҳаҳо: X-Idempotency-Key: bet_r_8c12_1, X-Trace-Id: tr_a1b2
{
"session_id":"s_456," "bet_id":"b_001," "round_id":"r_8c12," "маблағ ": {" маблағ": 2. 00, "асъор":" EUR"}
}
→ 200 {"статус ": "ваколатдор"," hold _ id":" h _ zz1"}
409
{"рамз ": "DUPLICATE"," паём":" Бет аллакай ваколатдор шудааст ", "бознишаста ": бардурӯғ," trace _ id":" tr _ a1b2"}3. 2 GRPC (протобуф, соддакардашуда)
proto syntax = "proto3";
ҳамёни баста. v1;
паёми пул {int64 minor_units = 1; асъори сатр = 2; }//sents Паёми Authorize сатри bet_id=2; сатри round_id=3; Маблағи пул = 4; сатр idempotency_key=5;}
паём Authorize сатр hold_id=2;}
хидмати ҳамён {
баргардонидани rpc Authorize
rpc Settle
}3. 3 Webhooks (мисоли обуна)
POST https ://провайдер. намуна/webhooks
{
"мавзӯъ ":" ҳамён. қарз. хуб," ", callback_url":"https://rgs. мисол/маҷалла," "махфӣ":"", "версия":" 1. 2"
}
POST https ://rgs. намуна/маҷалла
Сарлавҳаҳо: Имзои X: sha256 =..., X-Trace-Id: tr_a1b2
{
"event_type":"wallet. қарз. хуб," ", schema_version":"1. 2. 0, "event_id":"uuid," "сарборӣ": {"player _ id": "p _ 19f3", "маблағ": {"minor _ vits": 1460, "асъор": "EUR"}}
}4) Идемпотентсия ва пайдарҳамӣ
Дар амалиёти навиштан ҳамеша 'X-Idempotency-Key' -ро талаб мекунад (metadata REST/GRPC). Такрори → ҷавоби якхела.
Таркиби калидҳо бо параметрҳои тиҷорат алоқаманд аст (масалан, 'bet _ id + маблағ').
Sagas барои равандҳои тӯлонӣ (иҷозат диҳед → содир/қулф → ҳал кардан → қарз).
Outbox/CDC: Ҳодисаҳо ба таври атомӣ дар наздикии муомилот сабт шуда, берун аз он нашр карда мешаванд.
5) Версия ва мутобиқат
Истироҳат - '/v1/... '+' Фарсудашавӣ/Ғуруби офтоб '- сарлавҳаҳо; GRPC - 'ҳамёни бастагӣ. v1 '; чорабиниҳо - 'schema _ version' in мақомот + феҳристи схема.
Semver: майдонҳои ночиз - ихтиёрӣ/нуқтаҳои нав; асосӣ - роҳ/бастаи нав, "ҳарфи дукарата" -и рӯйдодҳо оид ба муҳоҷират.
Ҳеҷ гоҳ семантикаи ҳолати пулиро бидуни версияи асосӣ тағир надиҳед.
6) Бехатарии нақлиёт
mTLS дар ҳама S2S; барои webhooks - имзои бадан (HMAC/EDDSA) + тирезаҳои вақт ва эътибор.
Маҳдудияти миқёс (OAuth2 CC) ва як сегментатсияи калидии бренд/минтақа.
Боварӣ ба сифр: сиёсати шабака, нишонаҳои кӯтоҳмуддат, Vault/HSM, аудити WORM амалҳои интиқодӣ.
7) Мушоҳида ва SLO
Анҷоми 'trace _ id' дар REST, метамаълумот ва webhooks.
Нишондиҳандаҳо: таъхири p50/p95/p99, сатҳи хатогӣ аз рӯи рамзҳо, гузариш, навбати ақиб.
Ҳадди аққали SLO (нишонаҳо):- Ҳамёни p95 '<150 ms' (Authorize/Settle), REST ҷамъиятии B2B p95 '<300 ms', Webhooks '<5 min' 99%, "Ҳисоббаробаркуниҳои гумшуда/такрорӣ" = 0.
8) Тартиби бозгашт, бозгашт ва таҳвил
REST/GRPC: бозгашти экспоненсиалӣ, ҷиттер, маҳдудияти давомнокӣ (мӯҳлат/вақт).
Webhooks: расонидани такрорӣ ба '2xx'; нигоҳ доштани фармоиш аз рӯи калид ('player _ id/round _ id') ё такрорӣ дар қабулкунанда.
Тӯфони зидди тӯфон: маҳдудияти ақибнишинии параллелӣ, схемаи барқ, маҳдудияти нархҳо.
9) Намунаҳои ҳамгироӣ
Намунаи A: "Пул синхронӣ, рӯйдодҳо асинхронӣ"
1. RGS → Wallet (GRPC/REST) 'ба' → 'ҳал/қарз' иҷозат медиҳад.
2. Дар баробари ин, 'Бет нашр мешавад. ҷойгир 'ба автобус, ва провайдер квитансияи вебро мегирад.
Плюс: пули зуд, мушоҳида. Минус: ба шумо ду контур лозим аст.
Намунаи B: "Ҷараёни зинда"
Кӯпруки зинда-аслӣ ↔ тавассути ҷараёни GRPC (ҳолати ҷадвал, равзанаи гарав).
Амалиётҳои нақдӣ - алоҳида RPC; чорабиниҳо - дар автобус/вебхукҳо.
Плюс: таъхири ҳадди ақали ҳолати зинда.
Намунаи C: "REST ҷамъиятии B2B"
Каталогҳо/бонусҳо/филиалҳо/ҳисоботҳо - REST бо пагинатсияи курсор, филтрҳо, ET 'ag.
Плюс: ҳамгироии оддии шарик.
10) Анти-намунаҳо (парчамҳои сурх)
Амалиётҳои нақдӣ танҳо тавассути вебҳукҳо (бидуни тасдиқи синхронӣ).
Не 'Idempotency-Key' → такрори дебетҳо/қарзҳо.
Интишори чорабиниҳо бо гузаштани outbox/CDC (ҳодисаҳо гум мешаванд).
Webhooks-и имзонашуда/мӯҳлатнок
Омезиши PII/пулҳои минтақаҳои гуногун дар як канал бидуни барчаспҳои 'минтақа/иҷорагир'.
Сарбории калони бинарӣ дар webhooks (бозсозӣ ва маҳдудиятҳо).
Таназзули сифр: афтодани вебхукҳо ҳисобкунии пулро бозмедорад.
GRPC бидуни мӯҳлат ва бидуни бозгашт - пайвастҳои часпида, фарсудашавии захираҳо.
11) Рӯйхати санҷишҳо
Меъмор/Платформа
- Пул аз ҷониби GRPC/REST бо idempotency, чорабиниҳо - webhooks/автобус.
- Outbox/CDC дар ҳама роҳҳои пул.
Феҳристи схема [] '/v 'N' i; Раванди фарсудашавӣ/ғуруби офтоб.
- Имзои Webhook MTLS +; махфият барои як бренд/минтақа.
- SLO-панелҳои p95/p99, сатҳи хатогӣ, webhook-lag.
- DR/xaoc-машқҳо: таҳвили дукарата, фармоишӣ, партовгоҳи минтақа.
Провайдер/RGS
- Фиристодани 'X-Trace-Id' ва 'X-Idempotency-Key'.
- Рафъи ақибмонӣ ва такрорӣ; омода аст, ки вебҳукҳоро дубора таҳвил диҳад.
- Версияҳои шартномаро нав кунед; вокуниш ба 'Амортизатсия/Ғуруби офтоб'.
- Гузоришҳо/ченакҳо аз рӯи рамзи хато ва вақт.
12) Ҳалли мини барои парвандаҳои шадид
Маҳдудиятҳои Safari/ITP ва ҷонибҳои сеюм: пул - дар мизбон (REST/GRPC), мундариҷаи i webhooks аз мизбон ба ғайр аз IFrame.
Бисёр бренд: барчаспҳои 'иҷорагир _ ид/brand _ id/license' in сарлавҳаҳо ва чорабиниҳо; калидҳо/сертификатҳо алоҳида мебошанд.
Таркишҳои калон (мусобиқаҳо): пеш аз webhooks - буфер/навбат бо DLQ; ҳангоми изофабор - "ҷаласаҳои нав нест "/" мошинҳои ғайримуқаррарӣ таваққуф кунед ".
13) Намунаҳои огоҳиҳои ба SLO нигаронидашуда
Ҳамён. Иҷозат диҳед p95> 150 ms 5 min дар як саф.
'Хатогиҳои DUPLICATE/IDEMPOTENCY _ MISMATCH> 0. 5% дар 10 дақ.
Webhook ақибмонии p99> 180 c дар мавзӯи 'bet. ҳал'.
Ақибмонии истеъмолкунандагон дар Кафка> 30 с барои wallet. қарз. '
14) Хуруҷ
REST, GRPC ва webhooks дар IGaming технологияҳои ивазшаванда нестанд, балки қисмҳои ҳамон як модели амалиётӣ мебошанд.
REST/GRPC аз ҷониби инвариантҳои пулӣ нигоҳ дошта мешаванд: таъхири кам, аблаҳӣ, SLA-ҳои қатъӣ.
Вебхукҳо/автобусҳо шаффофият ва миқёсро таъмин мекунанд: чорабиниҳо, телеметрия, ҳамгироӣ.
Outbox/CDC, версия, имзоҳо ва мушоҳидаҳоро илова кунед ва меъморӣ гиред, ки дар он ҷо пул зуд ва бехатар ҳаракат мекунад, рӯйдодҳо гум намешаванд ва навсозӣ дардовар нест.
