Java分布式:分布式事务

Java分布式:分布式事务

二阶段提交协议

  两阶段提交其实比较简单,这边有两个资源提供准备和提交两个接口。

  由于隔离性互斥的要求,在事务执行过程中,所有的资源都是被锁定的,这种情况只适合执行时间确定的短事务。 但是为了保证分布式事务的一致性,大都是采用串行化的隔离级别来保证事务一致性,这样会降低系统的吞吐

  但因为2PC的协议成本比较高,又有全局锁的问题,性能会比较差。 现在大家基本上不会采用这种强一致解决方案。

TCC协议

  TCC名字的由来是其中包含了 try, confirm, cancel三个操作。

  与两阶段提交相比,TCC位于业务服务层, 没有单独的准备阶段,Try操作可以灵活选择业务资源锁的粒度。TCC是通过最终一致性来解决系统性能问题的这个设计,对我们设计抉择有很大的启发。 有些时候系统的技术问题是可以通过业务建模的方式来解决的。

 

Saga

  Saga是30年前的一篇数据库论文里提到的一个概念。在论文中一个Saga事务就是一个长期运行的事务,这个事务是由多个本地事务所组成, 每个本地事务有相应的执行模块和补偿模块,当saga事务中的任意一个本地事务出错了, 可以通过调用相关事务对应的补偿方法恢复,达到事务的最终一致性

原文地址:https://www.cnblogs.com/MrSaver/p/11381205.html

时间: 2024-10-01 07:32:45

Java分布式:分布式事务的相关文章

分布式数据库事务

在分布式数据库环境中,一个数据库事务可以更新多个场地上的数据,这种数据库事务称为分布式事务.   分布式事务必须满足传统事务的特性,即原子性,一致性,分离性和持久性.但是分布式事务处理过程中,某些场地(Server)可能发生故障,或 者由于网络发生故障而无法访问到某些场地.为了防止分布式系统部分失败时产生数据的不一致性.在分布式事务的控制中采用了两阶段提交协议(Two- Phase Commit Protocol).即事务的提交分为两个阶段: 预提交阶段(Pre-Commit Phase) 决策

Java中的事务——JDBC事务和JTA事务

本文来介绍一下J2EE中和事务相关的内容,在阅读本文之前,希望读者对分布式有一定的了解. Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务. 常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现.所以本文暂不讨论容器事务.本文主要介绍J2EE开发中两个比较基本的事务:JDBC事务和JTA事务. JDBC事务 JDBC事务,就是在Java中用来控制

分布式&分布式锁&Redis分布式锁

一.什么是分布式分布式的CAP理论告诉我们:任何一个分布式系统都无法同时满足一致性(Consistency).可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项.C:一致性,在分布式环境下,一致性是指多个节点同一时刻要有同样的值:A:可用性,服务一直保持可用状态,当用户发出一个请求,服务能在一定时间内返回结果:P:分区容忍性,即使单个组件不可用,操作依然可以完成:目前很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是

分布式——分布式锁

目录 前言 幂等性 锁的属性 分布式锁 设计目标 设计思路 边界条件 设计要点 不同的实现 结束语 前言 突然觉得想要安稳的度过一生简直可以称之为臆想,想想历史上的盛世,大都不过三四十年,如何能保证自己生活的大时间一定是在那三四十年之中(不过真的希望未来越来越好,大势要好,个人也要好).一份稳定的工作,爱自己的人,自己爱的人感觉都有点奢求.我知道这些在生活种都会慢慢被发现,也许一眨眼就要回首往昔了,发现这些东西的选择并不是自由的,而是被时间推动的.好似随着年龄的增长越发觉得自己的渺小,过去的东西

C#和JAVA中编写事务代码

C#  DAL层代码,执行多条增删改,使用事务操作: /// <summary> /// 执行 多条增删改 (非查询语句) /// </summary> /// <param name="strSql"></param> /// <param name="paras"></param> /// <returns></returns> public static int E

[Java][Spring]Spring事务不起作用 问题汇总

[Java][Spring]Spring事务不起作用 问题汇总 http://blog.csdn.net/szwangdf/article/details/41516239

Java学习之事务四大特性和隔离级别

事务 事务(Transaction),一般是指要做的或所做的事情,这些事情必须全部都完成,或者造成的影响和改变全部都撤销. 四大特性 Java中,事务有四个特性(ACID):原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability). 1.原子性(Atomicity):操作这些指令时,要么全部执行成功,要么全部不执行.只要其中一个指令执行失败,所有的指令都执行失败,数据进行回滚,回到执行指令前的数据状态.(原子性保证事务内的操作要

[Java复习] 分布式事务 Part 2

分布式事务了解吗?如果解决分布式事务问题的? 面试官心里: 只要聊到你做了分布式系统,必问分布式事务,起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么. 为什么要有分布式事务? 分布式事务实现的几种方案: 1. 两阶段提交方案/XA方案 这种分布式事务方案,比较适合单块应用里.跨多个库的分布式事务,由于因为严重依赖于数据库层面来搞定复杂的事务,效率很低,绝对不适合高并发的场景. 如果要玩儿,那么基于 Spring + JTA 就可以搞定. 这个方案,很少用,一般来说某个系统内部如果出现

[Java复习] 分布式事务 Part 1

1. CAP理论 C: Consistency 一致性 A: Availability 可用性 P: Partition tolerance 分区容错性 CAP定理:一个分布式系统不可能同时满足CAP三个要求,最多只能同时满足其中两项. 1.1. CA: 放弃分区容错性,所有数据放一个节点,退回单机模式. 1.2. CP: 放弃可用性,一旦网络故障,受影响服务需要等待恢复时间,系统处于不可用状态. 1.3. AP: 放弃一致性,这里指放弃强一致性,确保最终一致性.大多数分布式系统的选择. 2.

分布式强一致性事务

一.事务的概念 事务是一组操作的执行单元,相对于数据库操作来讲,事务管理的是一组SQL指令,比如增加,修改,删除等,事务的一致性,要求,这个事务内的操作必须全部执行成功,如果在此过程种出现了差错,比如有一条SQL语句没有执行成功,那么这一组操作都将全部回滚 最经典的例子便是:A向B汇款500元,B账户多了500元,这整个过程,要么全部正常执行,要么全部回滚,不然就会出现A扣款,B收不到钱,或者A没扣款,B收到500元的情况,这种场景是灾难性的. 事务特性(ACID)  (1)Atomic(原子性