目前采用的三种解决方案:
1、定期校队
2、TCC
Try: 尝试执行业务
完成所有业务检查(一致性)
预留必须业务资源(准隔离性)
Confirm: 确认执行业务
真正执行业务
不作任何业务检查
只使用Try阶段预留的业务资源
Confirm操作满足幂等性
Cancel: 取消执行业务
释放Try阶段预留的业务资源
Cancel操作满足幂等生
3、基于可靠消息
可靠消息
实现:
业务活动的主动方,在完成业务处理的同一个本地事务中,记录消息数据
业务处理事务提交后、通过实时消息通知业务被动方,实时通知成功后删除消息数据
消息恢复系统定期找到未成功发送的消息,交给实时消息服务补发送
约束:
被动方的处理结果不影响主动方的处理
被动方的消息处理操作是幂等操作
成本:
可靠消息系统建设成本
消息数据CRUD成本
适用范围
对最终一致性时间敏感度较高
降低业务被动方实现成本
实现方式2:
业务处理在业务事务提交前,向实时消息服务请求发送消息,实时消息服务只记录消息数据,而不真正发送
业务处理服务在业务事务提交后,向实时消息服务确认发送。只有在得到确认发送指令后,实时消息服务才真正发送消息
业务处理在业务事务回滚后,向实时消息服务取消发送
消息状态确认系统定期找到未确认发送或回溯的消息,向业务处理服务询问消息状态,业务处理服务根据消息ID或消息内容确定该消息是否有效。
成本
一次消息发送需要两次请求
业务处理服务需实现消息状态回查接口
优点:
消息数据独立存储、独立伸缩
降低业务系统与消息系统间的耦合
CAP定理
对于共享数据系统,只能同时拥有以下三项中的两个:
Consistency(一致性): 所有 用户看到一致的数据
Availability(可用性): 对数据更新具备高可用性
Tolerance to Network Partition(分区容忍性): 以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择
分布式事务,本质上是对多个数据库的事务进行统一控制,按照控制力度可以分为:不控制、部分控制和完全控制。不控制就是不引入分布式事务,部分控制就是各种变种的两阶段提交,包括上面提到的消息事务+最终一致性、TCC模式,而完全控制就是完全实现两阶段提交。部分控制的好处是并发量和性能很好,缺点是数据一致性减弱了,完全控制则是牺牲了性能,保障了一致性,具体用哪种方式,最终还是取决于业务场景。作为技术人员,一定不能忘了技术是为业务服务的,不要为了技术而技术,针对不同业务进行技术选型也是一种很重要的能力!
分享到:
相关推荐
3、常用的分布式事务解决方案介绍 4、消息发送一致性(可靠消息的前提保障) 5、消息发送一致性的异常流程处理 6、常规MQ队列消息的处理流程和特点 7、消息重复发送问题及业务接口的幂等性设计 8、可靠消息最终一致...
本文将深入探讨.NET 2.0下的分布式事务解决方案,并结合提供的源代码进行分析。 分布式事务允许在不同的资源管理器(如SQL Server、Oracle或其他支持事务的系统)之间协调操作,确保数据的一致性和完整性。在.NET ...
SpringCloud2.0.5集成LCN分布式事物最新解决方案,内含tx-lcn运行tx-manager,然后运行lcn-cloud2.0我自己写的demo即可跑起来, maven jar包我都已经给打包好了加入到项目中即可应用 亲测不懂可以加我qq问329434396。
为了应对这些问题,分布式事务提供了多种解决方案,每种都有其适用的业务场景。 1. **两阶段提交(2PC)**:是最基础的分布式事务协议,由预提交和提交两个阶段组成,但在网络延迟或故障情况下可能导致阻塞,影响...
本项目"XA 多数据源分布式事物实现 java"提供了一个基于Java实现的分布式事务管理方案,适用于需要跨多个数据源进行事务操作的场景。 首先,我们要理解什么是XA。XA是由开放组(The Open Group)制定的一套分布式...
Seata(Simple Extensible Autonomous Transaction Architecture)是一款开源的分布式事务解决方案,它致力于提供高性能和简单易用的分布式事务服务。Seata将ACID(原子性、一致性、隔离性、持久性)事务特性扩展到...
龙果学院中华石杉主讲的大型网站分布式微服务分布式事务处理教程,很全配资料,希望对你有帮助的。 微服务架构的分布式事务解决方案,完整31讲-龙果学院
Seata是由阿里巴巴开源的一个分布式事务解决方案,旨在提供高性能和简单的分布式事务服务。它支持多种事务模式,目前最流行的模式是AT模式,其次是TCC模式和Saga模式。 - **RuoYiAT模式**:这是一种基于JDBC的自动...
**分布式事务的解决方案**: 1. **XA协议**:由开放组制定的一种分布式事务标准,允许跨多个资源管理器(如数据库、消息队列等)的事务协调。 2. **补偿事务(TCC)**:Try-Confirm-Cancel模式,每个操作先尝试执行,...
为了实现这一目标,我们可以利用数据库的事务特性,或者采用更高级的分布式事务解决方案,如Saga模式、TCC(Try-Confirm-Cancel)模式、或是基于消息队列的最终一致性方案。每种方法都有其优缺点,需要根据具体业务...
本示例项目"spring+mybatis+jta实现多数据源的分布式事务"提供了一种解决方案,利用Spring框架、MyBatis持久层框架以及Java Transaction API (JTA)来处理跨多个数据源的事务一致性。以下是对这一技术栈及其应用的...
0030--MySQL优化之SQL语句调优.zip ├─0031--MySQL优化之分表分库与读写分离.zip ├─0032--Java培优结业典礼第一天(面试题回顾).zip ├─0033--Java培训就业典礼第二天(分布式事物解决方案).zip ├─0034.使用...
分布式事务是现代大规模系统中解决数据一致性问题的关键技术。在多台服务器或多个数据库之间...对于喜欢倒腾的小伙伴,研究2PC以及相关的分布式事务解决方案如LCN,可以帮助提升对高并发、大数据环境下的系统设计能力。
6. **设计模式**:设计模式是软件设计中常见的解决方案,如单例模式、工厂模式、观察者模式等。面试时会通过具体问题来检验面试者对设计模式的理解和应用能力。 7. **算法**:数据结构和算法是编程的基础,面试中...
Spring Boot、MyBatis 和 Atomikos 的结合提供了一种解决方案,用于处理多数据源的分布式事务管理。以下是对这个主题的详细阐述。 首先,Spring Boot 是一个基于 Spring 框架的轻量级开发工具,它简化了配置过程并...
【解决方案】除了2PC和3PC,还有其他分布式事务处理方法,如TCC(Try-Confirm-Cancel)、Saga、乐观锁和Paxos/Raft等共识算法。每种方法都有其适用场景和优缺点,选择哪种方案取决于具体业务需求和系统特性。 总之...