赌场Failover、复制和DR计划
1)业务目标: RTO/RPO和关键漏洞
RTO(服务可能无法提供多长时间):登录/出价/存款-秒/分钟;报告是手表。
RPO(可能丢失多少数据):钱包/交易-~ 0-30秒;遥测-分钟。
关键漏洞:登录,存款/退出,投注/设置,KYC/AML香肠,PSP/游戏提供商网络游戏。
2)体系结构容错模式
Active-Active(多区域):两个区域都处理流量;低RTO/RPO,复杂的一致性。
Active-Standby:一个工作区域,第二个热点;状态更简单,RTO分钟。
基于细胞:隔离在"单元"(市场/品牌),局部事件不会破坏一切。
边缘派:Anycast CDN/WAF →区域网关→应用程序群集→ DB/缓存复制。
3)流量管理和网络捕获器
Anycast+CDN/WAF:L3/4/7吸收,起源健康支票。
DNS收件人(低TTL,多价值),交通经理/GSLB的健康指标。
BGP通过反DDoS提供商发布,以快速改变路径。
健康支票(逻辑示例):
if p95_latency>threshold 5xx_rate>threshold synthetic_login_fail:
drain(region_A);shift(traffic->region_B, ramp=5min)
4)数据: 钱包,订单,费率
真理的来源是布线日志(ledger):只有append,通过"operation_id"的幂等。
配对:ledger,PSP和游戏提供商之间的定期重新配对乔巴。
反配对:存款/香肠/付款的偶然钥匙;outbox/inbox中的重复数据消除。
5) DB复制: 选择和权衡
物理同步(半同步):最小RPO,延迟风险-点点应用(钱包)。
异步:更高的性能/简便性,RPO秒到分钟-用于游戏元数据,参考。
逻辑(CDC →流到另一个区域):灵活的选择性,方便跨引擎和分析。
缓存(Redis/Memcached):不是真理的来源;复制品/snapshots,温暖的开始。
PITR:离网存储上的连续日志(WAL/redo),恢复窗口≥ 7-30天。
6)一致性和一致性
Saga+Outbox:作为步骤链的业务交易,将事件原子地发布到DB中。
唯一的"意义上":操作的平均性,平衡版本的控制(最佳锁定)。
Eventual consistency in uncle flow(领导板,分析师);用来赚钱的strong。
7)组件及其捕获器
API/后端
Statles容器,自动轨道,蓝绿色/金丝雀;通过仓库(通过翻新)。
队列/流
法定群集(N=3/5),跨AZ复制品;重复和dlt队列策略。
钱包DB
A区的Praimari,A(其他AZ)的同步副本,B区的异步副本;禁止在split-brain时自动执行promote-仅带有支票单的手动/脚本。
文件/KUS工件
具有转换的对象存储,跨区域副本/CRR,KMS中的密钥。
WebSocket/Real-time
按键(table/game/market),按键;在feilover中-带有rejoin令牌的resubscribe。
8)支付和游戏提供商: 真相的许多来源
PSP收件人:每种方法(卡、钱包、加密)最少2个提供商。
SLA/成本/BIN利息率;断开降级的PSP。
游戏提供商:备用频道/ASN allow-list、单个区域密钥、隔离超时。
9)Webhooks和Colbacks: 可持续的接收和复制
收件箱模式:接受webhook → 检查签名/NMAS →写入不可思议的收件箱,→由窃听者偶然处理。
提供商转发:"event_id"/"signature"的backoff+ dedup。
在DR中:从inbox进行顺序控制(txn →定位)的继电器。
10)Bacaps: 战略3-2-1和恢复检查
3份拷贝/2个媒体/1个离线(1 份用于关键日志的离线/WORM)。
日程安排:每日snapshots+永久期刊;每周在"黑暗"展位进行测试。
恢复目录:"如何在t- Δ时提高钱包"。
11) DR计划: 角色、场景、沟通
Роли: Incident Commander, Comms, DB Lead, App Lead, Payments/Game PM, SRE Oncall.
通道:war-room,状态页面,sapport/合作伙伴/关联消息模板。
脚本(最低):- AZ损失,区域损失,PSP不可用,DB群集下降,游戏提供商退化,密钥泄漏,质量为5xx。
12) DR脚本矩阵示例
13)运行手册和自动化
"DR-cutover"按钮:经过验证的步骤序列(freeze writes → promote → warm caches → ramp traffic)。
完整性检查脚本:对账单/钱包中的金额进行核对,资产负债表的一致性。
功能闪光灯:事故发生时快速无障碍报告/出口/重型行车记录仪。
14) failover的可观察性
SLO指标作为触发因素:登录,存款,投注,游戏启动。
Технические: replication-lag, WAL-shipping, queue-lag, 5xx, p95, SYN backlog, WebSocket disconnects.
来自其他地区的合成脚本:登录/存款/投注每分钟。
端到端跟踪、"区域"、"psp"、"game-provider"标签。
15)混乱/DR演习
GameDay季度:AZ关闭,PSP降级,DB节点"丢失",队列停止。
回顾: 决策时间,缺失,噪音,瓶颈.
根据事实而不是"感觉"调整RTO/RPO和自动化。
16)安全和合规性
KMS/HSM(跨区域),轮换和双控制中的密钥/秘密。
WORM/immutability用于审核和事务日志。
与PSP/提供商签订的 SLA/DR承诺和24 × 7联系点的DPA/合同。
17)最小feilover策略示例(伪代码)
on Incident(type="REGION_DOWN"):
freeze_non_critical_writes()
promote_db(region=B)
verify_ledger_consistency()
warm_caches(region=B)
route_traffic(region=B, ramp=10%)
for step in [25%, 50%, 100%]:
if SLO_green(): ramp(step) else rollback()
announce_statuspage()
18)准备就绪清单(准备就绪)
- 每个漏洞的RTO/RPO定义;被企业接受。
- Multi-AZ最低;用于钱包,登录和付款的多区域。
- Ledger+等效性(keys)+outbox/inbox;重新安排时间。
- DB复制:同步在本地,async在DR;PITR已启用,还原已验证。
- 每个方法,路由策略和测试密钥两个PSP;游戏提供商是替代品。
- DNS/GSLB/Anycast,健康支票和合成,低TTL。
- Runbook'和"DR-cutover按钮",用于降解的特征。
- SLO/Alerta/Tracing;DR状态面板。
- 季度DR演习+复古;更新的联系人24 × 7。
二.总结
可靠的iGaming平台围绕货币回路构建:等效性布线日志,可预测的伪造者,可验证的复制和常规DR演习。将系统划分为单元和区域,自动化cutover,保留两个PSP和备用游戏提供商,监视SLO和接收器的完整性-即使是重大事故也将是可管理的事件,不会失去信任和金钱。