免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: dlms
打印 上一主题 下一主题

[金融] 谈谈24小时办业务你们都是怎么实现滴 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2007-03-04 14:26 |只看该作者
回复,楼主地问题非常好!
     我也是做金融软件的,我可以介绍我的一些观点,至少目前有家银行是这样做的(四大银行之一)。
24小时,涉及很多方面的影响因素,解决后能解决很多问题,我们大家都清楚,如ATM,中间业务,外汇买卖(外汇交易的高峰期都是在夜里)。而如果像其他帖子说的,通过备份而不检查帐户余额,那么就有可能出现数据不一致(在日切的那一刹那),严重情况下,帐户余额被
恶意透支。

论坛徽章:
0
22 [报告]
发表于 2007-03-04 14:43 |只看该作者
而目前我们银行的做法是:
    1. 首先帐户表中的余额字段应保存上日余额和当前余额。
    2. 有流水表负责记录当日发生的交易和金额,以及当前的系统状态(日始OR日终(PAUSE)OR日切(CHANGE))。
    3. 系统状态表,记录系统时间,
    那么在记帐处理的时候,就要分情况来处理:
     A. 2005.1.1日始情况(正常情况下),交易发生是,先读取系统表,发现是日始状态,那么按照正常日程处理,先扣帐,写交易流水和传票。
   B. 当日终发生时,要从2005.1.1日切换为2005.1.2日,首先先切换系统状态为日终(PAUSE)状态。那么再介绍同时并行的批量和联机交易如何处理:
       批量: 批量交易,将会把该表A备份到另一张表B(日终帐户表)中,进行处理,此时,帐户表A是不被更改的。
              当批量处理的时候,更新的帐户表为日终帐户表B,该表B只给批量的程序使用(读取和更新)。
              当批量处理完成后,即帐户表B 的上日余额2005.1.1日将与当日余额(2005.1.2)的一致。而帐户表A中的上日余额2004.12.31,
                    当日余额为2005.1.1日。
       联机:联机交易发生时,读取系统状态,发现是PAUSE,那么,交易将读取帐户表A,读取当日的帐户日终余额2005.1.1日的
             BAL(current),再读取交易发生额amt1(在PAUSE 状态下,帐户余额不被更改,只写交易发生额在流水文件中),因此,该帐户
             在2005.1.2的PAUSE 状态下的交易发生额=SUM(流水表中,根据交易时间2005.1.2日,帐户和系统状态为PAUSE的交易记录
             的发生额的汇总)。这样,可以计算出当前该帐户的余额,即通过BAL(CURRENT)- AMT1 获得。
             然后判断当前余额(2005.1.2日)是否足够。如果足够,则写流水表。写入的流水表中,记录的交易日期为2005.1.2日,系统状态
             为(PAUSE)状态。
    C. 当日切开始时,系统状态将为CHANGE。那么再介绍同时并行的批量和联机交易如何处理:
       批量:批量交易负责读取当前帐户表B中的数据,回写入帐户表A中,而写的时候,需要检查该帐户在2005.1.2日的流水表中,是否有发生
             交易。 如果有,则需要对当前余额进行扣减。规则同上。不同点是,增加将读取过的交易发生额置为已处理状态。表的修改顺序是
             先修改帐户表A,再修改流水表。
             当批量处理完毕后,将修改系统状态为日始状态。
       联机:联机交易发生时,读取系统状态,发现是CHANGE时,那么交易将读取流水表,判断是否有2005.1.2日,PAUSE状态下的发生额,
             如果没有,那么处理简单,同A的情况一致。如果有,则同C中批量的方法基本一致,先修改
             帐户当前余额=2005.1.1日的余额-2005.1.2PAUSE点的交易发生额-当前发生额,然后再修改流水表中的交易记录为已处理
             状态,再添加1条记录进入流水表。
      
     这种方法是纯粹通过应用的方法保证24小时,虽然比较复杂,但是确实是一种有效的方法。

[ 本帖最后由 liuzxcvb 于 2007-3-4 15:26 编辑 ]

论坛徽章:
0
23 [报告]
发表于 2007-03-05 11:32 |只看该作者
一般来说只要有状态变更就会暂停,总会对外停一段时间,好的作法只是将这段时间缩短,我见过的方案(390、400)短的停几分钟,长的停十几或几十分钟,极端情况下还需要人工干预。

论坛徽章:
0
24 [报告]
发表于 2007-03-07 12:22 |只看该作者
原帖由 liuzxcvb 于 2007-3-4 14:43 发表
而目前我们银行的做法是:
    1. 首先帐户表中的余额字段应保存上日余额和当前余额。
    2. 有流水表负责记录当日发生的交易和金额,以及当前的系统状态(日始OR日终(PAUSE)OR日切(CHANGE))。
    3. 系统 ...


是什么银行呀?如果这样,备份表的时候用不用锁整个表?要是锁表,而表又特别大,哪这一段发上来的交易怎么办?如果不锁,如何保持数据一致?能够在哪个点用什么表(A或B)去做平衡检查?不是很明白楼上的做法!呵呵!

论坛徽章:
0
25 [报告]
发表于 2007-03-09 21:44 |只看该作者

24小时交易,一点意义都没有。。而且浪费大量人力物力。。。

付出大量的劳动,只是为了给人家在凌晨1点钟交10块钱的电话费。或是。。。。。一点意义都没有。。。

论坛徽章:
0
26 [报告]
发表于 2007-08-01 11:11 |只看该作者
关注
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP