2016 - 2024

感恩一路有你

mq怎么实时监控某个值 分布式计算是如何控制事务的?

浏览量:4530 时间:2023-07-18 23:44:02 作者:采采

分布式计算是如何控制事务的?

事务管理不应该属于Dubbo的框架。Dubbo只需要由事务来管理,比如JDBC和JMS,它们是可以由事务来管理的分布式资源。只要Dubbo实现了事务可以管理的相同行为,比如回滚,其他事务的调度就应该由专门的事务管理器来实现。在Java中,分布式事务的主要规范是JTA/XA,其中JTA是Java的事务管理器规范,XA是工业标准的X/Open CAE规范,可以通过两阶段提交和回滚事务资源来定义。例如,如果数据库实现了XA规范,JTA和MSDTC都可以基于相同的行为对数据库进行事务处理。

首先,不建议使用XA两阶段提交方法处理分布式事务。要支持XA分布式事务,必须实现XA规范,服务本身是无状态的。如果这样做,就相当于把服务内部的东西公开了。分布式事务的最佳是事务补偿或基于消息的基础的最终一致性。

您可以想象最简单的分布式事务场景。对于跨行转账操作,操作涉及到异地调用两个服务服务,一个是本地取款服务,一个是目标银行提供的存款服务。这两个服务是无状态和独立的,形成一个完整的事务。事务处理的初步分析:事务补偿机制事务补偿是指事务链中的任何正向事务操作都必须有一个完全符合回滚规则的可逆事务。如果是一个完整的事务链,事务链中的每一个业务服务或操作都必须有一个对应的可逆服务。对于服务本身来说,它是无状态的,不容易通过上面讨论的DTC或XA机制实现跨应用和资源事务管理,建立跨资源事务上下文。因此,实现预提交和正式提交的真正分离是比较困难的。

这种情况下,在上面的例子中,先调用取款服务,完全成功并返回,数据已经持久化。然后打给异地存款服务。如果通话成功,本身没有问题。如果调用失败,需要调用本地注册的反向服务(本地存款服务)。如果调用本地存款服务失败,您必须考虑重试。如果约定的重试次数仍然不成功,您必须记录完整的不一致信息。也可以将本地存款服务作为消息发送给消息中间件,消息中间件将接管后续操作。通过上面的,我们可以看到,为了保证事务的完整性,需要手工编写大量的代码。我们可以考虑实现一个通用事务管理器来管理事务链和事务上下文。对于事务链上的任何服务,正向和反向操作都在事务中。管理和注册,事务管理器接管所有事务补偿和回滚操作。

基于消息的最终一致性这里要回答的第一个问题是我们需要实时一致性还是最终一致性。如果需要最终一致性,那么基础策略中基于消息的最终一致性是更好的解决方案。该方案真正实现了两种服务的解耦,而解耦的关键是异步消息和消息持久化机制。让 让我们从上面的例子来看。对于转账操作,将原来的两个服务调用改为第一步调用本地取款服务,第二步向消息中间件发送远程取款的异步消息。如果第二步是本地的,保证交易的完整性基本没有问题,也就是本地交易本身的管理机制。只要两次操作都成功,就可以返回客户成功。

由于脱钩,我们可以看到,当客户返回成功后,如果是上述情况,异地卡可以立即查看账户存款的增加情况。第二种情况不一定,因为是异步处理机制。消息中间件收到消息后,会对消息进行解析,然后调用外资银行提供的存款服务进行存款。如果服务调用失败,它将再次尝试。

异地银行存款操作应该不会长时间异常,无法使用,所以一旦发现异常,我们可以快速解决,消息中间件中的异常服务自然会重试,保证交易最终的一致性。这种假设问题可以解决,本地取款服务一般不可逆操作,除非绝对必要。本地取款和远程存款之间会有一个真空期,期间相关现金不在任何账户,只在一笔交易中间,但客户并不在乎这个,只要在约定的时间保证交易的最终一致性即可。

在幂等运算上,重复调用产生的业务结果与一次调用产生的业务结果相同。简单地说,所有提供的业务服务,无论是正向还是反向,都必须支持重试。因为必须考虑服务调用失败的例外,业务数据的累计增减不能由服务的多次调用引起。关于能否补偿的问题,我们说的是将多个跨系统的业务服务组合成一个分布式事务,所以在补偿事务时必须考虑客户是否需要最终的一致性。什么是顾客 s对中间阶段不一致的容忍度?三

上例中,如果采用交易补偿机制,基本可以做到准实时补偿,不会有太大影响。但是如果采用基于消息的最终一致性方法,整个周期可能会比较长,需要很长时间才能得到最终的一致性。比如周六转账,下周一可能会通知客户转账不成功,所以要考虑客户是否能忍受。

其次,对于前面的讨论,如果真正需要的是实时性一致性,那么即使采用事务补偿机制,也无法实现实时一致性。也就是说,在两次业务服务呼叫的中间,客户 的前台业务操作已经对持久数据执行了其他附加操作。在这种模式下,我们要考虑给数据库表添加业务状态锁的问题,即在整个事务提交完整并成功之前,第一个业务服务调用还处于中间状态,需要通过业务锁进行标记,以控制相关的业务操作和行为。然而,这种模式无疑增加了整个分布式业务系统的复杂性。

行车记录仪停车监控线接法?

找到汽车的ACC。每辆车的ACC位置不一样,一般位于方向盘底部左侧;

2.安装固定行车记录仪,将降压线穿过a柱,直至接近ACC

3.打开ACC盖。内部一般有几个中小端口,选择要连接的端口;

4.降压线红线接ACC,黑线接负极或地。如果需要停车监控,则接入长电源;

5.安装完成后,启动行车记录仪。如果能正常使用,说明安装成功。

事务 服务 一致性 业务 消息

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。