简析银行核心系统24小时设计
24小时的概念及带来的问题
1. 24小时是个系统可用性的问题,比如晚上出去夜宵用银行卡结账、去KTV凌晨刷卡结账、去国外其他时区旅游刷卡消费等都要求核心系统提供24X7不间断服务。
2. 所有的时段都有交易在发生,客户账户余额24小时不间断更新,在客户账户层面如何计提客户账户利息?,如何进行会计科目的余额与账户余额总分核对?
客户交易用到了账户余额(读写)、利息计提也用到了账户余额(读)、会计科目总分核对也用到了账户余额(读),但是由于24小时不间断服务带来了账户余额不间断发生更新变化,无法得到一个静止状态的余额(数据量小的银行可以考虑使用oralce数据库的flashback功能得到一个静止状态的余额),故24小时要解决这一矛盾,将客户账户余额解耦,将实时交易用到的余额与计提账户利息用到的余额、会计科目用到的余额进行解耦(将对客户账户余额的读和写解耦)。
所以我们要把账户余额分成两个概念,姑且定义成1.可用余额 2.账面余额。
1. 可用余额,用户层面查询到的余额,可以24小时不间断发生变化。
2. 账面余额,计提利息用到的余额、会计总分检查用到的余额。在过账程序入账时发生变化,平时静止不变。
由于每笔交易都包含有日期、会计科目报表也包含日期,因此系统日期也要根据使用的场景解耦成 1. 联机系统交易日期 2.批量处理日期
上述思路是对账户余额在空间上的解耦,即使用两个字段来分离存储(单表双余额)。还有一种思路是对余额在时间上解耦(多表单余额),即日终时段客户发起的交易不实时修改余额,而是登记到另外的表,事后再追账去更新账户的余额。
下面简单介绍单表双余额的处理方法。
在包含余额的账户主表里面有账号、上笔发生日期、可用余额、账面余额,平时客户查询、存取款等操作的都是可用余额,每一笔操作都会有唯一(每日唯一,甚至是系统生命周期内唯一)的流水号对应,系统逐笔记录形成业务流水,以供后续生成会计流水用(从业务流水到会计流水可以作为另一话题展开)。流水信息里面包含了流水号、业务日期、账号、交易场景(交易码)、发生额等。
日终批处理开始之前系统日期(联机交易日期和批处理日期都为T日),先对联机系统的交易日期切换到下一天(T+1日),这样系统在此之后收到的交易都是下一天(T+1日)的,因此T日的交易不会有变动了,这样批量处理系统根据T日的业务流水信息逐笔修改账户的账面余额,待T日所有的业务流水处理完毕后,就得到了账户在T日的日终余额,批量系统可以后续对账户根据日终余额进行利息计提,也可以对T日的会计报表和分户账余额进行总分核对,在T日的全行总账生成完毕后,批量处理系统在T日的工作也就完成了,此时批量处理系统的日期切换到T+1日。
其他问题
1. 联机系统日切时的数据库长事务对系统造成的影响
a) 在日切时,sleep一定的时间等待T日的数据库事务提交
b) 超过一定的时间仍然没有提交的,可以放在下一天修改账户的账面余额和入会计账。
c) 考虑对数据库的长事务进行监控和优化,比如对数据库会话进行日期标识,之后再根据条件kill
2. 日终批处理的任务太重,相当于要把白天的所有操作处理一遍
a) 将日终的部分任务移到日间(日切前)处理,提前完成一部分任务,从而缩短日终的处理时间。
3. 由于数据库是行级锁,存在一定的几率发生日终过账程序与联机程序处理到同一条记录的情况,这种情况下,一般导致日终过账中断或者联机交易中断。联机交易中断后,客户可以再次发起记账;日终过账程序中断可以考虑出错时保存断点,之后从断点开始继续处理。
简析银行核心系统24小时设计相关推荐
- tickcount()修改成小时分钟_银行核心系统24小时机制实现总结
本文共2268字 | 建议阅读时间:5分钟 作者:张广 在核心系统的设计实现中,24小时机制向来是一个重点难点.早期的银行只有柜面一个业务办理渠道,因此当时的综合业务系统,跟随网点的营业时间,分为日起 ...
- 支付业务与技术架构学习总结(9)——银行核心系统之清算体系
支付清算系统是经济金融活动的基础性支撑.支付.清算体系建设是金融理论与实践的重点课题.本文主要描述了支付系统建设的发展历程及构成,分析了银行内部清算体系设计,有利于快速建立起金融服务体系思路.希望略尽 ...
- 银行核心系统之应用集成
银行核心系统之应用集成 云技术 10月8日 以下文章来源于小代嘚吧嘚 ,作者代堂鸣 小代嘚吧嘚 欢迎加入银行核心系统大本营,用讲故事的方式给银行业务加点料,用项目管理的方法来改进工作和生活! 本文共7 ...
- 银行核心系统:“交易(Transaction)”是什么?
有新人问我什么是交易,该怎么定义? 是一个程序? 是处理各种数据的一个方法? 是完成输入和输出结果的过程? 是有操作页面的? 是没有操作页面的? 是对应着银行某业务功能? ...... 这些的确是银行 ...
- 银行核心系统如何选型分布式数据库(含6大落地要点验证)
本文根据洪烨老师在[deeplus直播:金融业数据库转型与国产化改造]线上分享演讲内容整理而成.(文末有回放的方式,不要错过) 洪烨 光大银行 数据库专家 具有多年银行业系统架构设计及DBA实战经验, ...
- 银行核心系统入门简介
文章来源与某位大神的力作,写的非常好,科目的地方首位科目号有待商榷,但总之看完后很多东西一目了然. 银行核心系统入门简介 本文的目标读者是准备从事银行核心系统开发.维护的从业人员.请注意,是" ...
- 南郑县天气预报软件测试,汉中 高速公路环境气象监测系统 24小时自动化监测...
汉中 高速公路环境气象监测系统 24小时自动化监测项目背景 路面状况监测为道路安全文明驾驶起到重要辅助作用.驾驶员在驾驶车辆行驶过程中需要高效快速的判断前方路况,提前了解前方路况对驾驶员安全文明行驶起 ...
- 国内银行核心系统建设情况调研报告
国内银行核心系统建设情况调研报告 前言 核心业务系统,也称为综合业务系统,是银行信息化建设的核心部分,是银行业务经营的基础.随着世界金融环境的不断向前发展,拥有稳健.灵活.安全.可靠的核心业务系统是体 ...
- 腾讯云发布金融国产化战略、《腾讯云银行核心系统分布式转型白皮书》
5月11日,在腾讯金融云国产化战略峰会上,腾讯云发布金融国产化战略:腾讯云将持续加大技术投入打造新一代国产化精品产品,并依托产品构建全栈领先的国产数字化基座.同时,腾讯云还将携手伙伴,共同构建国产数字 ...
最新文章
- SyntaxError: Non-ASCII character ‘\xe5‘ in file(xxlrt_1.py) on line 7, but no encoding declared;
- C#生成CHM文件(应用篇)之代码库编辑器(5)【总结、程序、源代码】
- Redis的数据类型以及每种数据类型的使用场景
- mysql-binlog日志恢复数据库
- matlab八个实验报告中文版,Matlab实验报告8
- C++ 控制结构和函数(三)—— 函数II(Functions II)
- 【转】C#命名空间与java包的区别分析
- 热烈祝贺我刊主编郑纬民教授被提名为中国工程院2017年院士增选候选人!
- 程序员,别逼自己学 AI 了,掌握正确的方法,开发水平暴增!
- 【转】Asp.Net TreeView with CheckBox
- ORDER BY分类
- 逻辑结构的四种基本关系
- 手机tim邮箱服务器密码错误,qq邮箱登录失败显示session timeout解决方法
- 圣诞节要来了,程序员女友用Python画圣诞树的浪漫代码作为最好的礼物
- win10内存占用率莫名其妙过高解决方法
- 如何利用极致业务基础平台构建一个通用企业ERP之十四生产任务单设计
- 微型计算机原理与接口技术 教案,微型计算机原理与接口技术教学网站的设计和开发...
- pandas 小技巧——用指定列的“非空值”值去填充另一列的“空值”
- YSZI的微信公众号导航软件按装方法
- Excel中函数公式(上)