分布式事务处理   

当数据分布在多个数据库服务器上时,就需要各种保护措施来保证数据正确地写到所有数据库中。例如,考虑一个在三个分离的远程数据库上修改的 客户帐户平衡表,如果在事务写阶段,任何一个数据库连接失败,数据库之间就失去同步。怎样检测并更正这种情形呢?事务处理(TP)监示一个叫做两阶段提交 的过程并在某种程度上解决了这个问题。

分布式系统上的实时事务处理需要一个两阶段提交过程保证将事务得到多个数据库上时的数据完整性。所涉及到的每个数据库在事务被提交给任何其他数据库 时都要授权给它。如果事务成功,则被提交,否则事务应被回退。与容错系统类似,两阶段提交保护系统防止在事务写期间发生系统错误。它也允许操作员异常终止 一个事务并将数据库恢复到原先的状态。事务监示器按下面的过程跟踪事务过程。   

1.写操作命令被送到每个数据库后,事务监示器等待一个响应信号以保证所有的系统都准备好写。如果所有系统都来响应,事务将在这里异常终止。   

2.假定都响应了,事务监示器指示数据库开始写,然后等待每一个系统表明数据写成功的确认信号。   

3.若未得到所有系统响应信号(由于线路或系统故障),事务监示器命令所有数据库将此次的写操作取消。

例如,运行在机器A上的一个组件是单个事务的组成部分之一,组件能够利用机器B上的SQL Server执行数据库事务。组成事务的另一组件用运行在机器C上的Oracle服务器执行数据库事务。这三台机器运行着四块不同的代码,它们全都要参与到这个事务中。
    即使通过COM+隐藏分布式事务中的细节,也必要研究和了解分布式事务的“幕后”结构。请记住这些ACID特性适用于所有类型的事务,不论事务涉及的数据库是什么类型或数量有多少。
使用MS DTC进行两阶段提交
    让我们再看一下上述分布式事务的例子。如果Oracle服务器停机了,如何保证事务的原子性。答案是使用两阶段提交(two-phase commit,2PC)和通过Microsoft分布式事务协调器(MS DTC)协调。
    MSDTC是最先集成在SQL Server中,现在已成为COM+必不可少的部分,通过在事务处理中加入其他的因子,MS DTC确认所有的过程完成并提交他们。
    让我们进一步研究MS DTC,了解其工作方式。为了能用两阶段提交协议进行协调,事务中的每个数据源必须装有MS DTC。在这些安装中,主要的协调器总是在事务的起源之处。这个主要的协调器称为提交协调器,它负责确保事务的提交或终止。不管事务是成功地提交还
是回滚,提交协调器都负责向客户应用程序返回一个报告。
    在两阶段提交中第一阶段是准备阶段,每个服务器执行它接收的指令,但所有应写到磁盘的内容都被缓冲,如图1 9 - 1所示。

    一旦服务器已执行了指令,就通知提交协调器关于事务的状况,如图1 9 - 2所示。

    第二阶段称为提交阶段。如果提交协调器接收到来自每个数据源的“准备提交”通知,就提交事务,如图1 9 - 3。

    然而,如果从某一受影响的数据源接收到失败信息,提交协调器将执行回滚,并且通知客户应用程序,见图1 9 - 4。

    

java 分布式事务处理相关推荐

  1. 5个强大的Java分布式缓存框架推荐

    2019独角兽企业重金招聘Python工程师标准>>> 在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没 ...

  2. java分布式事务原理_JAVA分布式事务原理及应用

    JTA(Java Transaction API)允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据.JDBC驱动程序的JTA支持极大地增强了数据访问能力. 本文的目的是要 ...

  3. 5个强大的Java分布式缓存框架

    5个强大的Java分布式缓存框架 在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来 ...

  4. ORA-02049: 超时: 分布式事务处理等待锁

    java.sql.SQLSyntaxErrorException: ORA-02049: 超时: 分布式事务处理等待锁 ORA-06512: 在 "HECDEV.BGT_JOURNAL_BA ...

  5. Spring boot + Sharding JDBC 分库分表 及 分布式事务处理

    Sharding JDBC 基础概念 Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC.Proxy 和 Sidecar(规划中)这 3 款既能够 ...

  6. SpringCloud Alibaba实战--第八篇:Seata分布式事务处理

    系列文章目录 微服务新王SpringCloudAlibaba 文章目录 系列文章目录 前言 一.Seata简介 1. Seata是什么? 2. ID+三组件模型 3. 处理过程 二.Seata下载安装 ...

  7. java分布式事务——seata,tcc解决方案总结!

    目录 1.分布式事务基础理论 1.1.CAP理论 1.2.BASE理论 2.分布式事务解决方案之2PC(两阶段提交) 2.2.1 XA方案 2.2.2 Seata方案 2.2.3分布式事务解决方案之T ...

  8. java 本地缓存框架_5个强大的Java分布式缓存框架推荐

    在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的 缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了 ...

  9. java gui狼_5个强大的Java分布式缓存框架

    在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了5 ...

最新文章

  1. IronPython系列:Composite Pattern及其实现
  2. python opencv打开摄像头
  3. 基于用户投票的排名算法(一):Delicious和Hacker
  4. qt lighthouse相关
  5. Spark数据本地性
  6. sencha touch 彩色图标按钮(button+ico)
  7. IOC 容器中那些鲜为人知的细节(关于 FactoryBean 和 BeanFactory)
  8. 全国dns服务器地址
  9. InputMethodManager内存泄漏的原因及解决方案
  10. Python 基础学习Chapter6
  11. 看图识物_‎App Store 上的“认识动物-看图识物大全、学英语”
  12. scrum敏捷开发方法论
  13. 实验一 网络侦查与网络扫描
  14. openCV-二值化,黑白图片
  15. python调用谷歌地图api_python显示地图与谷歌地图
  16. dasda(大s打陈建州)
  17. 测试环境部署——selenium+python
  18. 苹果基带坏了怎么办_iPhone8/8plus无服务怎么办?
  19. 对搜索引擎排名不友好的五种网站-SEO
  20. 计算机技术创新型,面向企业需求的创新型计算机技术专业硕士胜任力模型研究.docx...

热门文章

  1. weex scroller
  2. vim与外部文件的粘帖复制
  3. Pictures Test
  4. Java基础视频笔记(四):泛型
  5. 【文末福利】算法大赛评委共话技术趋势,这场直播值得一看!
  6. ACL2021 | 把关键词生成看成集合预测问题
  7. 腾讯测试王者荣耀网速的软件,腾讯游戏启用账号时长共享功能 开启人脸识别测试有效果吗?以《王者荣耀》为试点...
  8. python代码加密cython_python通过cython实现加密
  9. Leetcode每日一题:23.merge-k-sorted-lists(合并K个排序链表)
  10. 2019年的流水账和总结