如何安排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,相等性,可观察性和默认合规性。有了这样的基础,该平台将按国家/货币/提供商进行扩展,并在没有安全和金钱妥协的情况下承受压力。