REST، gRPC و Webhooks در iGaming: الگوهای و ضد الگوهای
مقاله کامل
1) نقشه پروتکل: چه کسی مسئول چه چیزی است
REST - درخواست های همزمان جهانی بیش از HTTP/JSON. کش شفاف، اشکال زدایی ساده، مناسب برای ادغام B2B و مدیریت API.
gRPC - RPC باینری با کارایی بالا در طول HTTP/2: تاخیر کم، جریان، مدارهای سخت. خوب برای مسیرهای پول داغ (کیف پول/حل و فصل)، خدمات داخلی و جریان های طولانی مدت (زنده).
Webhooks تماس تلفنی از گیرنده به فرستنده است. برای رویدادها استفاده می شود («پول سقوط کرد»، «حد کار کرد»)، جایی که آغازگر همیشه کسی نیست که منتظر نتیجه باشد.
قانون طلایی:- پول در RPC همزمان (REST/gRPC) با ناوردایی سخت و idempotency می رود. تله متری و رویدادهای کسب و کار - به صورت ناهمگام (webhooks + اتوبوس رویداد).
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
{«کد «: «تکراری»,» پیام»:» شرط در حال حاضر مجاز «, «قابل استرداد «: غلط,» ردیابی _ id»:» tr _ a1b2»}3. 2 gRPC (protobuf، ساده شده)
نحو اولیه = «proto3»;
کیف پول بسته. v1 ؛
پیام پول {int64 minor_units = 1 ؛ رشته ارز = 2; }/سنت پیام AuthorizeBetReq {session_id=1 رشته; bet_id=2 رشته ؛ round_id=3 رشته ؛ مقدار پول = 4 ؛ idempotency_key=5 رشته ؛}
پیام AuthorizeBetRes {وضعیت رشته = 1; hold_id=2 رشته ؛}
کیف پول سرویس {
rpc AuthorizeBet (AuthorizeBetReq) را برمی گرداند (AuthorizeBetRes);
rpc SettBet (SettReq) باز می گردد (SettRes);
}3. 3 Webhooks (نمونه اشتراک)
پست https ://ارائه دهنده. به عنوان مثال/webhooks
{
"موضوع ":" کیف پول. اعتبار. باشه» «callback_url":"https://rgs مثال/مجله "،" راز ":"، "نسخه": "1. 2"
}
ارسال https ://rgs. مثال/مجله
عناوین: X-Signature: sha256 =..., X-Trace-Id: tr_a1b2
{
"event_type":"wallet. اعتبار. باشه» «schema_version":"1 2. 0"، "event_id":"uuid," "payload ": {"player _ id ": "p _ 19f3 "، "مقدار ": {" minor _ units": 1460،" ارز":" EUR"}
}4) بی نظمی و سازگاری
همیشه به «X-Idempotency-Key» در عملیات نوشتن) فراداده REST/gRPC (نیاز است. بازپخش: همان پاسخ.
ترکیب کلید به پارامترهای کسب و کار گره خورده است (به عنوان مثال، 'bet _ id + مقدار').
Sagas برای فرآیندهای طولانی (اجازه → تعهد/قفل → حل و فصل اعتبار).
Outbox/CDC: رویدادها به صورت اتمی در نزدیکی معامله گرفته می شوند و در خارج از آن منتشر می شوند.
5) نسخه و سازگاری
استراحت - '/v1/... '+' استهلاک/غروب آفتاب '-heads ؛ gRPC - کیف پول بسته. v1 '; events - 'schema _ version' in bodies + رجیستری طرح.
SemVer: جزئی - زمینه های نقطه پایانی اختیاری/جدید ؛ major - یک مسیر/بسته جدید، «دو حرف» از وقایع مربوط به مهاجرت.
هرگز معانی وضعیت پولی را بدون نسخه اصلی تغییر ندهید.
6) ایمنی حمل و نقل
mTLS در تمام S2S ؛ برای webhooks - امضای بدن (HMAC/EdDSA) + برچسب زمان و اعتبار پنجره.
محدودیت محدوده (OAuth2 CC) و تقسیم بندی کلیدی برند/منطقه.
اعتماد صفر: سیاست های شبکه، نشانه های کوتاه مدت، Vault/HSM، حسابرسی WORM از اقدامات مهم.
7) قابلیت مشاهده و SLO
End-to-end 'trace _ id' در REST، ابرداده gRPC و کتابهای وب.
معیارهای: p50/p95/p99 تاخیر، نرخ خطا توسط کد، توان، صف تاخیر.
حداقل SLO (نشانه ها):- کیف پول p95 <150 ms '(Authorize/Settle)، REST B2B p95' <300 ms '، Webhooks «<5 min» 99th صدک، «Lost/Duplicated Settlements» = 0.
8) بازپرداخت، بازپرداخت و سفارش تحویل
REST/gRPC: عقب نشینی نمایی، لرزش، محدودیت مدت زمان (مهلت/زمان).
Webhooks: تحویل قابل تکرار به '2xx' ؛ نگه داشتن سفارش توسط کلید ('player _ id/round _ id') یا deduplication در گیرنده.
ضد طوفان: محدودیت عقب نشینی موازی، قطع کننده مدار، محدودیت سرعت.
9) الگوهای ادغام
الگوی A: «پول همزمان، حوادث آسنکرون»
1. RGS → کیف پول (gRPC/REST) «مجاز» → «تسویه/اعتبار».
2. به طور موازی، "شرط بندی منتشر شده است. به اتوبوس منتقل شد و ارائه دهنده یک رسید webhook دریافت می کند.
به علاوه: پول سریع، قابلیت مشاهده. منفی: شما به دو خط نیاز دارید.
الگوی B: «پخش زنده»
پل ↔ زنده هسته از طریق جریان gRPC (وضعیت جدول، پنجره شرط بندی).
معاملات نقدی - RPC جداگانه ؛ حوادث - در اتوبوس/webhooks.
به علاوه: حداقل تاخیر وضعیت زنده.
الگوی C: «استراحت عمومی B2B»
کاتالوگ/پاداش/وابسته/گزارش - REST با صفحه بندی مکان نما، فیلتر، ETag.
به علاوه: ادغام شریک ساده.
10) ضد الگوهای (پرچم قرمز)
معاملات نقدی فقط از طریق وب سایت ها (بدون تایید همزمان).
بدون «Idempotency-Key» → بدهی/اعتبار تکراری.
انتشار رویدادها با دور زدن outbox/CDC (رویدادها از دست می روند).
Webhooks بدون امضا/زمانبندی → جایگزینی.
مخلوط کردن PII/پول از مناطق مختلف در یک کانال بدون برچسب «منطقه/مستاجر».
payload باینری بزرگ در webhooks (شکستن retrays و محدودیت).
تخریب صفر: سقوط وب سایت ها محاسبه پول را متوقف می کند.
gRPC بدون مهلت و بدون برگشت - اتصالات گیر، خستگی منابع.
11) چک لیست
معمار/پلت فرم
- پول توسط gRPC/REST با idempotency، حوادث - webhooks/bus.
- صندوق پستی/CDC در تمام مسیرهای پول.
- /vN и رجیستری طرح ؛ فرآیند کاهش/غروب آفتاب.
- امضای mTLS + webhook ؛ رازداری در هر نام تجاری/منطقه.
- SLO-داشبورد p95/p99، میزان خطا، webhook-lag.
- DR/xaoc-تمرینات: تحویل دو، خارج از سفارش، تخلیه منطقه.
ارائه دهنده/RGS
- ارسال «X-ردیابی ID» و «X-idempotency-کلید».
- عقب نشینی و عقب نشینی ؛ آماده ارائه مجدد webhooks است.
- به روز رسانی نسخه های قرارداد ؛ واکنش به «سقوط/غروب خورشید».
- سیاهههای مربوط/معیارهای کد خطا و زمان.
12) راه حل های کوچک برای موارد تیز
Safari/ITP و محدودیت های شخص ثالث: پول - در میزبان (REST/gRPC)، محتوای iFrame از طریق «postMessage» ارتباط برقرار می کند ؛ وب سایت از یک میزبان غیر از iFrame.
چند نام تجاری: برچسب ها 'tenant _ id/brand _ id/license' in هدر و حوادث ؛ کلیدها/گواهینامه ها جداگانه هستند.
انفجار بزرگ (مسابقات): قبل از webhooks - بافر/صف با DLQ ؛ هنگامی که بیش از حد - «بدون جلسات جدید «/» توقف قلاب غیر هسته ای ».
13) نمونه هایی از هشدارهای SLO گرا
کیف پول. اجازه دهید p95> 150 ms 5 دقیقه در یک ردیف.
'DUPLICATE/IDEMPOTENCY _ عدم تطابق' errors> 0. 5 درصد در 10 دقیقه
Webhook تاخیر p99> 180 c در موضوع 'شرط. حل و فصل'.
تاخیر مصرف کننده در کافکا> 30 ثانیه برای همه. اعتبار.
14) برداشت
REST، gRPC و WebHooks در iGaming فن آوری های قابل تعویض نیستند، بلکه بخشی از همان مدل عامل هستند.
REST/gRPC توسط متغیرهای پولی نگهداری می شود: تاخیر کم، idempotency، SLA های سخت.
Webhooks/bus شفافیت و مقیاس را فراهم می کند: رویدادها، تله متری، ادغام.
اضافه کردن صندوق پستی/CDC، نسخه، امضا و مشاهده - و یک معماری که در آن پول به سرعت و با خیال راحت حرکت می کند، حوادث از دست داده است، و ارتقاء بدون درد است.
