`
balaschen
  • 浏览: 192368 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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

阅读更多
最近在看《Java Transaction Design Strategies》,想到了对事务要求比较严格的银行间转帐这种事务,夸行转帐是怎么保证事务的原子性和一致性呢?首先我能想到的就是使用JTA,用两阶段提交,可是仔细一想,发现还是不能完整保证:
假设转帐步骤如下:
begin jta transaction
从A行A用户扣款 -->命名为A操作
往B行B用户存款 -->命名为B操作
commit or rollback

由于使用了两阶段提交,所以提交事务时,将发生
prepared commit A
prepared commit B
commit A
commit B

假如在prepared都没有任何问题,然后commit A成功,commitB时发生网络故障,失败,然后试图rollback A,发现与A数据库服务器网络也在这一瞬间发生故障,那就造成了从A扣款成功,但没能往B帐号存款。


我没有任何银行项目经验,当然这都是我的想象和假设
分享到:
评论
1 楼 balaschen 2007-05-10  
再胡思乱想一下,跨行间转帐似乎也不太可能依赖数据库间的事务,因为对方银行不可能提供你直接操作数据库吧,肯定也是提供一个接口供对方银行使用。

相关推荐

    java 网银跨行清算 项目

    项目可能会采用两阶段提交(2PC)或者分布式事务解决方案,如Saga模式,确保交易的原子性和一致性。 4. **消息队列**: 为了处理高并发和异步操作,项目可能会使用RabbitMQ或Kafka作为消息中间件,实现任务解耦和...

    java-bank.zip_跨行_银行 java

    以下是对"java-bank.zip_跨行_银行 java"这个项目所涵盖的IT知识的详细解释: 1. **对象封装**:银行账户是一个典型的实体对象,它包含私有的属性如账号、用户名、密码、余额等。通过公有方法(如deposit()存款,...

    329_java银行业务管理系统_银行转账管理_银行存取款.rar

    在Java中,这可能涉及到对数据库的操作,如SQL查询来获取账户余额,更新转账记录,并确保交易的原子性和一致性。事务处理是这一部分的重点,以确保资金转移的准确无误。 3. **银行存取款管理** 存取款管理涵盖了...

    银行交易系统参赛版(Lcsky)

    同时,事务处理必须遵循ACID(原子性、一致性、隔离性、持久性)原则,确保数据的一致性和完整性。系统可能会使用数据库管理系统(如MySQL或Oracle)来存储和管理交易记录,这些数据库系统通常具备强大的事务处理...

    bank.rar_银行

    1. 数据一致性:遵循ACID(原子性、一致性、隔离性、持久性)原则,保证交易的正确性。 2. 高可用性:设计冗余备份和故障恢复机制,确保系统24/7运行。 3. 安全性:通过加密技术、防火墙、入侵检测等手段,防止...

    银行存取款系统说明文档

    5. **数据一致性**:系统应保证事务的ACID特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),确保交易的正确执行。 6. **Java技术栈**:标签中的“银行存取款系统...

    银行信用卡管理系统源代码

    此外,系统还可能使用事务处理机制,确保这些涉及资金流动的操作原子性、一致性、隔离性和持久性(ACID属性)。 转账功能则允许用户将信用卡账户的资金转至其他银行账户或接收他人的转账。这通常需要银行间的实时...

    分布式事务架构设计.pdf

    本地消息表是一种常见的分布式事务解决方案,例如在跨行转账场景中,先进行本地事务操作(如扣款并记录凭证),然后通过消息中间件通知另一方银行增加金额。消息中间件可以是事务性的,确保消息的可靠传递,或者采用...

    银行管理系统

    此外,SQL Server 2008还支持事务处理,确保了银行业务的原子性、一致性、隔离性和持久性,这对于金融系统的稳健运行至关重要。 银行管理系统的功能模块通常包括: 1. 用户管理:用于注册、登录和权限管理,确保...

    java网上银行系统

    同时,Spring的事务管理功能确保了银行业务操作的原子性和一致性。 三、Hibernate框架 Hibernate作为持久层框架,负责数据库操作。它通过ORM(Object-Relational Mapping)技术将Java对象与数据库表映射,降低了...

    数据库系统概论(第4版)第十四章.ppt

    例如,银行的跨分行转账操作就是分布式数据库的一个典型应用,需要同时更新不同节点上的数据库以保证数据一致性。 分布式数据库系统的一个关键特性是数据独立性,包括逻辑独立性、物理独立性和数据分布独立性。这...

    用java编写的在线交易(代码)

    为了确保交易的原子性和一致性,Java的JTA(Java Transaction API)和Spring的Transaction Management可以用来处理分布式事务,确保即使在部分操作失败时,整个交易也能回滚到一致状态。 6. **并发与性能** 高...

    NET_ATM系统全局

    5. **事务处理**:ATM交易通常涉及多个步骤,因此系统必须支持事务处理,确保交易的原子性和一致性。 6. **故障恢复与冗余**:系统需要有备份和恢复机制,以应对硬件故障或网络中断,保证服务的连续性。 7. **性能...

    深入理解高并发下分布式事务的解决方案.docx

    2. **在线下单场景**:在电商平台下单时,需要同时更新库存数量和订单状态,由于这两个操作通常涉及不同的数据库,因此需要通过分布式事务来保证数据的一致性。 #### 五、常见的分布式事务解决方案 1. **基于XA...

    RCBS:创建了一个小规模的银行系统,供柜员开设存款帐户并向客户发行ATM卡,以及让客户激活和查询其ATM卡中的可用余额

    4. **事务处理**:银行操作如开户、转账等涉及资金流动,需要保证原子性、一致性、隔离性和持久性,即ACID特性。Java的并发和同步机制,如synchronized关键字和java.util.concurrent包,可以用来保证在多线程环境下...

    某互联网大厂MySQL面试题-20题(附带答案)

    1. **InnoDB引擎**:InnoDB是MySQL中最核心的存储引擎,支持事务处理和行级锁定,提供了对事务的ACID属性的支持,同时实现了外键约束,保证了数据的完整性和一致性。 2. **ACID特性**:ACID是数据库事务处理的四大...

    数据库操作,包括把csv或excel表格导入数据库及各种SQL语言操作.zip

    6. **事务处理**:在需要确保数据一致性的情景下,如银行转账,使用事务来保证操作的原子性和一致性。 在实际工作中,掌握这些基础的数据库操作和SQL技能是必不可少的,它们可以帮助你有效地管理和利用数据资源,为...

    hbs:HBS为HBase提供可序列化的事务处理

    HBS可能采用了两阶段提交(2PC)或者其他分布式事务协议来确保跨行、跨表操作的一致性。这些协议允许在多个节点之间协调操作,以达到全局一致的结果,即使在节点故障的情况下也能保证数据不丢失。 HBS项目还考虑了...

Global site tag (gtag.js) - Google Analytics