核心银行系统 7 X 24小时 不间断运行的核心系统设计(方案二)

2019年6月至今,生产环境稳定运行,未发生财务错账,得到财务团队认可。

方案一与方案二,最终选择了方案二,原因:方案一每日批量更新账户上日余额,千万级别的数据更新耗时

 

夜间批处理,如生成会计流水文件、总分对账文件、日终充值文件等,按账户当日日终余额或当日交易流水进行统计汇总,需要保持数据的一定静止,而夜间联机交易更新账户余额,账户余额为动态。一般批量处理与联机处理的冲突区主要在账户余额解决批量用账户日终余额与联机用账户实时余额的存储与使用问题,可很大程度实现7×24业务服务。也即解决总分账、会计账一致问题。

实现7x24服务,要点在保证两份数据的准确并存:

  • 动态实时数据(实时余额):主要是动账及日间查询交易使用
  • 日切点的静态数据(上日余额):主要用于批处理:比如总分核对、财务供数等

双余额动账方案

分户账上设置“当前余额“、”上日余额“、”最近交易日期”。根据以上字段来实现当前余额、上日余额的读取和更新,仅在动账交易发生时才更新上日余额,即如果该账户长期无动账,在此期间将不用更新上日余额

1. 实时动账处理

日切后,动账时当日第一笔交易更新上日余额、最后交易日期。

首先检查帐户的‘最交易日’与‘会计日’是否相同, 如果不同,说明该帐户日切后第一次变更余额, 此时要将‘当前余额’放入‘上日余额’‘最交易日’更改为‘会计日,并记录交易流水,该交易流水的日期为日切后会计日 换日后的第二笔及更多交易,只更新当前余额,并记录交易流水。

2. 分户账获取上日余额处理(总分对账文件)

 

扩展:

使用双字段保存快照,而不是复制保存,此方案已有多种落地实现:

1、mysql的事务隔离实现,MVCC(多版本并发控制),在表的末尾隐式添加create version/delete version两个字段。

2、redis主从异步复制方案实现,在主节点宕机或故障转移,使用mainID, secondID,进行部分数据复制,避免全量数据复制。

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值