转账方案设计
数据一致性方案
方案1
- A业务处理和消息发送在同一个本地事务中执行,执行完成后本地消息表中有条status=0记录;
- B收到消息后,在同一个事务中进行业务处理和消息发送(返回响应);
- 如果B处理失败,由Broker进行失败重试;
- A收到响应消息后更新对应的消息状态为1;
- A端本地会启动定时任务,定时扫描状态为0的消息,发出告警,甚至进一步可以执行数据补偿操作;
方案2
- A业务处理和消息发送在同一个本地事务中执行,执行完成后产生一条业务记录;
- B收到消息后,进行业务处理,处理完成数据库产生一条业务记录;
- 如果B处理失败,由Broker进行失败重试;
- 所有坏账通过对账系统进行发现和处理;
可靠性方案
方案1:传统的数据库主备方案
缺点:
- 主备系统需要自己运维,特别是跨地域容灾时运维成本更大;
- 主备切换时,要么服务不可用,保障数据强一致;要么服务可用,容忍数据不一致;
方案2:OceanBase
优点:
- 三地五中心,可做到城市级别的容灾;
- 一键式扩容和缩容;
参考: