论坛首页 Java企业应用论坛

有谁知道银行的跨行转帐是怎么保证交易的原子性和一致性?

浏览 36614 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-14  
有很多时候,操作是有顺序的,不能随意调换,这也是复杂性的根源
0 请登录后投票
   发表时间:2007-05-14  
国内银行的跨行转帐一般都是通过人民银行的系统做的。都是异步操作。如果从A行A帐户转到B行B帐户。A行先从你的帐户上扣款,然后给人行发报文,然后人行再把报文发给B行,B行再给你入帐。
每天下午会进行行间的一个扎差。

人行有两套系统:
大额支付系统;
  基本上是实时的,就是说人行接到报文后马上发给B行。
小额支付系统
  批量处理,隔一段时间处理一次。

而人行是按照报文向银行收费的,所以我们转帐时,快的要比慢的贵。
0 请登录后投票
   发表时间:2007-05-14  
事务在银行系统内也只是保证本系统为准的。所以,如果你收款没有收到,那么你发起交易的这个系统会根据收款系统的对账文件,再把钱给你调整回来。当然调整也有可能出系统交易的一至,对于跨系统的,里面复杂的多了。各个系统间通讯一般是先把钱扣下来,然后发报文通知别的系统,如果没有相应,系统会自动重发。就这个重发交易就很难做。当然,日终的时候还要对账,对账还涉及到以哪一方为准的问题,一般转账这种交易,是以收款那个系统为准,这样你发起交易的那个系统就要根据首款那个系统的对账文件进行调整,当然调整也有可能出错,那就晕菜了。说到 会计,会计帐一般是来自每个交易,比如转账是个交易,这个交易就有个交易码,交易码会被 配置上会计动作,也就是这个交易涉及到哪些科目。日志对完帐后,就会根据产生的交易生产科目流水,然后再把科目发生额汇总,以产生当天的新的科目流水。帐务就是这么一天天的加起来的,当然了,有些对账可能一天之内还没有办法对,可能要跨两天甚至3天才能对,这就是业务帐和会计帐不付,反正这里面就是业务人员和技术人员吵架妥协的问题了。既要保证交易安全可靠,还要保证后台的会计是正确的。
0 请登录后投票
   发表时间:2007-05-17  
我在05年的时候去某银行存钱,存了1800,当时很相信银行,存钱的凭证不知道放哪里去了。后来就不见了那笔钱。发现不对的时候,已经是2个月后的事情了,我去银行,他们告诉我要提供存款单或者告诉他们确切的存钱时间,我不见了存款单,也只能说是某天早上存的,几点也说不清,他们说没办法查,后来我这笔钱就不见了。哈哈,只能自认倒霉了,所以,奉劝请各位存钱的时候一定要保留好存款单。
0 请登录后投票
   发表时间:2007-05-17  
eddie 写道
我在05年的时候去某银行存钱,存了1800,当时很相信银行,存钱的凭证不知道放哪里去了。后来就不见了那笔钱。发现不对的时候,已经是2个月后的事情了,我去银行,他们告诉我要提供存款单或者告诉他们确切的存钱时间,我不见了存款单,也只能说是某天早上存的,几点也说不清,他们说没办法查,后来我这笔钱就不见了。哈哈,只能自认倒霉了,所以,奉劝请各位存钱的时候一定要保留好存款单。


不太相信,银行还有"存款单"!除非是手工记账!

如果系统没记账,柜台现金与系统内现金不平, 柜台MM没方法下班,要找到错误才能下班,呵呵






0 请登录后投票
   发表时间:2007-05-17  
我上次到工行ATM上取钱,第一次取钱过程失败,系统提示取钱失败,我重新插入再次取钱,取钱成功。不知道为什么第一次失败。到后来对账的时候,发现这次交易过程大致为:
贷2000
借2000
贷2000
也就是第一行和第二行借贷抵消。也许这就是银行的事务回滚过程吧。
0 请登录后投票
   发表时间:2007-05-17  
呵呵。看了上面各位大师精彩的讨论,学到了很多知识,在这想说说我的一个想法。
全局性事务控制是肯定没有办法实现的。只能做好局部全局性,就是各自先把自己的事情做好,而跨系统之间的事务处理,则应该提供良好的接口,以跨行转账为例,应该先确保自己的操作正确之后,再向人民银行发出请求,人民银行根据请求报文进行正确处理,发报文给要求转账银行说明已经处理该事务,而同时发报文给转账银行进行转账处理,如果转账出现错误,则发消息给人民银行要求进行事务回滚,人民银行自己进行事务回滚之后,再发消息给要求转账银行进行事务回滚吧。。
至于其中出现的消息发送失败,则真的只能进行人工处理,或者数据模拟操作了。。
PS:个人理解,有错误,大师们请多拍砖,这样我才会进步,哈哈- -
0 请登录后投票
   发表时间:2007-05-18  
1.首先保证各系统自己的帐正确,是平的。
2.两系统间通过多种方式对帐(即时处理,日对帐,月对帐)
鉴于银行业务数据量的特征,估计不会存在大范围内的事务控制。
国内银行我不知道,但是我知道UBS的系统是存在着手工纠正这种机制的。
0 请登录后投票
   发表时间:2007-05-18  
balaschen 写道
很想知道银行是怎么对帐的,难道面对那一大驼数据一行一行的对?


会计对账基本准则:

有借必有贷,借贷必相等。
总帐=分户账之合(总分核对)。总帐是一个人记的,分户帐是另一个人记的。
每日轧平。

三条基本。

所以银行之间是以信用为依据的,两个原子的系统,中间以公信的报文来连接。
0 请登录后投票
   发表时间:2007-05-21  
碰到过银联卡取钱...卡所在银行确实扣款了,但是ATM机,抛出个异常...结果米都没,后来还是N个工作日以后对账来的,跨行取的话,忒麻烦饿..
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics