小戴
作者小戴2018-08-10 18:25
软件开发工程师, 某金融企业

聊聊7*24小时机制之单表双余额

字数 1508阅读 2056评论 0赞 1

1、故事背景

很久以前,在银行县核心乡的日终批量村有三个程序。

分别为日切(Cut Off)、日终(End Of Day)和日始(Start/Begin Of Day)。

日切、日终和日始这三个程序有一个最显著的特点,没有无用户操作页面,并且在运行的时候无须用户干预。他们三个的人生价值就是到CPU上运行,把运行结果告诉人类。

CPU是稀缺资源,只有一个,他们三必须排着队,轮流使用。

① 是聪明能干的老二执行日终批处理,主要包括外围系统交换数据、进行系统内资金清算、内部业务处理(例如结息、还息、自动转存、计提应付利息等)、生产对账文件、为数据分析平台准备数据、记总账、业务报表生成。
② 由诚信守时的老大进行日切;
③是早睡早起的老三,运行日始批处理;

人类把第三步处理叫做日终批量。
91o0v8vf2g3o

91o0v8vf2g3o

长久以来,三个程序相安无事。

但随着科技的发展,县里银行逐渐开展了自助设备、网上银行、手机银行等多种电子渠道,接入了支付系统、银联和网联系统等第三方接口。对我们乡提出了要全天候待机服务,核心系统需要一直在线,并且保证交易不中断!

后来,村里的小伙子们轮班值岗,CPU的速度越来越快,远远超过内存和硬盘的速度,可能影响客户交易。

人类想到,这批处理系统的效率得改进改进啊,尽管现行的计算机处理能力不够、面对海量的客户同时交易有困难,也得想办法解决这个难题呀!

这一天,老大日切被叫到了会议室,村长提出了改造24小时机制的项目,并任命认真负责的老大日切为项目经理,要求尽快提供处理方案。

老大心里苦,正在感慨问题之难的时候,突然一丝灵光闪动...有了高招。

2、请开始你的表演

我是老大--日切(Cut Off),一个批量作业,生活在批处理中,我的家--用你们的“黑话”来说,就是会计日期,我的邻居也是一个批量作业,其中有一段很有趣的代码。

我经常会在零点时分去拜访他,去的时候当然不能空着手,我会携带一个切换日期的标志送给他计算,耐心等待他在CPU中忙活完,有时他也会中途停下来休息几分钟,最后,作为回赠的礼物,他告诉我系统已成功从当前工作日切换到下一个工作日。

拜访的次数多了,慢慢地琢磨出我这个邻居做事的套路:单表双余额,如下:

单表双余额法,是在分户账上设置“当前余额”、“上次余额”、“上次更新日期”,实现当前余额、上日余额的读取和更新。

账户余额是联机的实时余额,保存最新的账户余额;上日余额是保存账户每个会计日的最后更新余额,即上日日终余额,用于批量计息、总分核对、报表余额展示、向外围供数等。

1.1动账处理
交易日期 > 上次交易日期 :

1.当前余额 →上次余额
2.当前余额 +/- 交易金额 →当前余额
3.交易日期 →上次交易日期

交易日期 = 上次交易日期 :

1.当前余额 +/- 交易金额 →当前余额

交易日期 < 上次交易日期 :

1.当前余额 +/- 交易金额 →当前余额
2.上次余额 +/- 交易金额 →上次余额

1.2日终批量获取上日余额
批量日期 > 上次交易日期 :取当前余额
批量日期 <= 上次交易日期 :取上次余额
举例:
nj5htzzc3auc

nj5htzzc3auc

1.3交易失败(同时更新同一账户)
若批量锁表,联机失败,交易重做将成功;若联机锁表,批量失败,批量重新从断点重跑。

其实,银行核心7*24小时机制可分为两种:准24小时和真24小时。

准24小时是核心系统在日切时停止联机交易一小段时间,待日切完成后再启动联机,通常时间控制在五分钟内,这段时间内未完成的联机交易被强行中断,不接收新的交易请求。而真24小时是不停联机,在任意时间联机交易都可以正常发送处理,不会中断。
za6ya6q13b9e

za6ya6q13b9e

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广