如何安排backend賭場建築
1)完整圖片: 域和數據流
關鍵域:- Identity&Accounts-註冊、身份驗證、角色、設備、會話。
- Wallet&Ledger-現金帳戶,獎金錢包,交易,leder(僅限附錄)。
- Gaming&Bets-遊戲會議,投註,回合,計算結果,整合(RNG/Live/Crash等)。
- Bonuses&Promotions-frispins,腰包,代金券,wagering(重新綁定),anti-Abuse。
- Payments (Cashier)-上坡道/後坡道:卡片、APM、地下室/立體聲、KYC綁定。
- KYC/AML/KYT&RG-個性/地址/收入驗證,交易篩選,限制和超時。
- 風險與合規性-利率/付款限制,制裁清單,地理阻止,審計。
- Catalog&Lobby-提供商,遊戲,類別,限制的列表;A/B變體。
- 報告和BI-P&L,GGR/NGR,保留,玩家生命周期,隸屬關系。
- Observability&Ops-logs,度量,跟蹤,Alert和Frod信號。
編排:一個現代化的平臺正在構建一個事件驅動程序:服務通過總線(Kafka/NATS)交換事件,關鍵操作線性化(錢包/ledger),側面子系統簽名並異步響應(獎金,BI,通知)。
2)分層模型
邊緣層:API網關,WAF/機器人保護,rate限制,geo/IP過濾器,功能標誌。
服務層:跨域的獨立微服務;同步合同-僅在需要即時一致性的地方(例如,利率下的錢包借記)。
事件總線: 主要業務事件('bet。placed`, `round.settled`, `bonus.issued`, `kyc.verified`, `payout.requested`).
數據:用於事務的OLTP(Postgres/MySQL);會議/限制的KV/Cache(Redis);用於日誌和導出的對象存儲(S3);OLAP(ClickHouse/BigQuery)用於分析。
3)錢包和領主: 平臺的心臟
原則:- 申請人:每筆金融交易都包含類型、金額、貨幣、來源參考(利率、獎金、存款)。
- 現金和獎金余額是分開的。不可能「混合」金錢和獎金;使用資金來源政策。
- debet→kredit原子性:投註=現金或獎金錢包借記+保存;回合計算消除了困境,並根據結果進行貸款/借記。
- `LEDGER: HOLD` (−10.00 EUR, source: cash, ref: betId)
- `LEDGER: SETTLE_DEBIT` (−10.00 EUR) + `LEDGER: PAYOUT` (+36.00 EUR)-如果WIN
- `LEDGER: HOLD_RELEASE` (+10.00 EUR)-如果VOID/PUSH
- 等效操作(「requestId」上的等效鍵)。
- 平衡轉化(optimistic locking)以防賽車。
- 轉換時的清晰貨幣計算和匯率記錄。
4)與遊戲提供商集成
錢包模式:- Seamless-操作員之間的平衡;投註/計算通過我們的實時API進行。
- Transfer是提供商的遊戲銀行存款;摩擦更大,但對錢包藥房的要求更低。
- `bet.「在錢包裏→前置」(hold) →「接受/重新定義」。
- `round.提供商(webhook/WS)的settle '→ ledger中的settle →總線事件→報告/獎金。
通過橋梁進行標準化:單一事件模式和「roundId/betId」標識符,限制和側面標記表,錯誤歸一化。
5)獎金,旅行和反搶購
模特:存款獎金,獎金,退款(現金),任務,錦標賽。
Wagering:重新組合的進度是分開的;「哪些賭註計數」規則(按遊戲類別計算的百分比)。
優先註銷:首先是獎金,然後是真實的-反之亦然,嚴格按照政策。
玩家的反模式:相反結果的賭註,制藥進步的最低賭註,不同權重遊戲之間的轉移-被規則和得分所困擾。
6) KYC/AML/KYT и Responsible Gaming (RG)
KYC:ID/地址/年齡驗證;狀態控制限制(deposit/withdraw/betMax)。
AML/KYT:篩選付款通道和鏈路地址(用於加密地址),制裁清單,資金來源。
RG: 白天/周限制,超時,自我體驗;在'bet之前執行阻塞檢查。place` и `payout.request`.
7)結帳: 存款和付款
存款:卡提供商/ARM,地下室/stables,本地方法;webhook確認;防備充電器風險。
付款:大筆款項的隊列,限制,4眼原則;資金來源→「僅現金余額」。
電子坡道/後坡道:自動轉換,KYT地址,對沖曝光。
8)限制,風險和區域規則
國家/貨幣/CUS的限額配置文件(「DEFA」,「VIP_A」,「VIP_B」,「ULTRA」)。
IP/GPS/文檔上的地理塊。
遊戲/類別重疊,司法管轄區禁止提供商。
對異常的反應:投註激增,設備/付款相關性,來自單個用戶的許多「VOID」。
9)可觀察性和操作
指標:錢包延誤,投註故障,回合計數時間,depozita→stavka轉換,GGR/NGR,SLA支付,獎金投註份額。
邏輯和跟蹤:所有事件中的相關「traceId」;將原始事件存儲在冷庫中。
Alerts:錢包響應降級、「VOID」激增、重新報告錯誤、「RG_BLOCKED」增長。
Runbooks:清晰的事件程序(提供者下降,Ledger Russinchron,取消回合)。
10)安全和隱私
Auth:短暫的JWT/opaque tokens,鍵旋轉(「kid」),mTLS到關鍵積分。
訪問政策:嚴格的角色劃分(運營,財務,sapport),2FA;對於大筆付款-第二人稱鏟球。
數據隱私:PII加密,付款數據令牌,存儲最小化;GDPR/按需刪除。
審計:不變日誌,關鍵事件簽名,導出給監管機構。
11)擴展和容錯能力
自動滑板後面的狀態服務;用於熱表(投註、事件日誌)的水平切片。
Ledger-用於閱讀/報告的垂直庫存+復制;「凍結」通過陰影表遷移模式。
緩存:帶有TTL和「雙檢查」策略的Redis(通過事件讀取+入侵)。
DR/HA:multi-AZ,定期恢復備用,監管級別的RPO/RTO。
降級模式:離線結帳、關閉「沈重」獎金、在輪胎不可用時將現場遊戲轉換為維護。
12)合同和示例
投註(同步,JSON/REST或gRPC):json
POST /bets/place
{
"requestId": "9a7f-…", "playerId": "p_123", "wallet": "cash",
"roundId": "R-2025-10-17-19:20:05-PRAGM-Table12", "gameId": "pragm_live_roulette", "selection": [{"market":"straight","value":"17"}], "stake": {"amount":"10.00","currency":"EUR"}, "device": {"ip":"203.0.113.5","ua":"Mozilla/..."}
}
答案是:
json
{
"status": "ACCEPTED", "betId": "bet_8cd…", "balanceAfter": "245.30", "hold": "10.00", "limits": {"maxBet":"5000.00"}
}
總線事件(async):
json
{
"event":"round.settled", "roundId":"R-2025-10-17-19:20:05-PRAGM-Table12", "bets":[{"betId":"bet_8cd…","outcome":"WIN","stake":"10.00","payout":"360.00"}], "playerId":"p_123", "ts":"2025-10-17T19:20:09.231Z", "traceId":"tr_5f1…"
}
13)反模式(打破平臺)
在一個沒有來源的交易中混合獎金和現金。
長壽令牌並將其存儲在客戶端上。
在關鍵操作中缺乏冪等性(debet雙打)。
單片戰鬥數據庫報告SQL(OLAP訴OLTP)。
向提供商提供盲目授權書,而無需重新分配和限制。
沒有時間標準(UTC無處不在!)在回合ID和報告中。
非金融領域(獎金/通知)中的同步呼叫會阻止出價。
14)後端賭場啟動支票清單
金融和錢包
- Ledger append-only,等效性,平衡版本。
- 現金/獎金分離,來源策略。
- 課程/轉換記錄在操作中。
遊戲集成
- 統一投註/結算合同,「roundId/betId」格式。
- Seamless默認錢包;Transfer-只有無罪釋放的地方。
- 自動VOID/REFUND腳本。
KYC/AML/RG
- 接納利率/付款前的政策;KYC狀態↔限制。
- KYT用於鏈條、制裁篩選、證據基礎存儲。
卡薩
- Webhooks/簽名, dubly/retrai, reconcile with PSP/加密提供商。
- 大額付款,運營商行為日誌的4眼。
可觀察性
- 錢包度量、盤點後退、投註失敗、SLA付款。
- 跟蹤端到端(traceId)、異常、運行手冊。
安全性
- mTLS/HMAC, JWT簡稱TTL,鍵輪換。
- 角色/權利,2FA,付款數據令牌化。
數據
- 將OLTP/OLAP,CDC分為DWH,S3用於原始事件。
- Bacaps和定期恢復測試。
15)結果
後端賭場體系結構是一個嚴格的金錢和賭註核心,具有線性一致性,並且在事件中具有靈活的外圍:獎金,分析,溝通。成功不是由微服務的數量決定,而是由紀律決定:明確的域邊界,沒有「魔術」的ledger,相等性,可觀察性和默認合規性。有了這樣的基礎,該平臺將按國家/貨幣/提供商進行擴展,並在沒有安全和金錢妥協的情況下承受壓力。