高并发中间件1-基于MQ的分布式事务解决方案

Posted Java架构师进阶手册

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高并发中间件1-基于MQ的分布式事务解决方案相关的知识,希望对你有一定的参考价值。


高并发中间件1-基于MQ的分布式事务解决方案

高并发中间件1-基于MQ的分布式事务解决方案


高并发中间件1-基于MQ的分布式事务解决方案


高并发中间件1-基于MQ的分布式事务解决方案


高并发中间件1-基于MQ的分布式事务解决方案


实现分布式事务的5个步骤

高并发中间件1-基于MQ的分布式事务解决方案


高并发中间件1-基于MQ的分布式事务解决方案


高并发中间件1-基于MQ的分布式事务解决方案


高并发中间件1-基于MQ的分布式事务解决方案


高并发中间件1-基于MQ的分布式事务解决方案


高并发中间件1-基于MQ的分布式事务解决方案


缺点是 必须成功,不能回滚


CAP理论:

  • 一致性(Consistency) :在分布式系统中所有的数据备份,在同一时刻都保持一致状态,如无法保证状态一致,直接返回错误;

  • 可用性(Availability):在集群中一部分节点故障,也能保证客户端访问系统并得到正确响应,允许一定时间内数据状态不一致;

  • 分区容错性(Partition tolerance):分布式系统在遇到任何网络分区故障时,仍然能保证对外提供满足一致性和可用性的服务,除非整个网络环境都发生故障;

高可用、数据一致是很多系统设计的目标,但是分区又是不可避免的事情:


CA without P:如果不要求P(不允许分区),则C(强一致性)和A(可用性)是可以保证的。但其实分区不是你想不想的问题,而是始终会存在,因此CA的系统更多的是允许分区后各子系统依然保持CA。


CP without A:如果不要求A(可用),相当于每个请求都需要在Server之间强一致,而P(分区)会导致同步时间无限延长,如此CP也是可以保证的。很多传统的数据库分布式事务都属于这种模式。


AP wihtout C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。现在众多的NoSQL都属于此类


Base理论核心思想:

既是无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。


基本可用(Basically Available):分布式系统在出现故障时,保证核心可用,允许损失部分可用性。(响应时间上的损失、功能上的损失


软状态(Soft State):系统中的数据允许存在中间状态,中间状态不影响系统的整体可用性。(支付中处理中等)


最终一致性(Eventually Consistent):系统中的数据不可一直处于软状态,必须在有时间期限,在期限过后应当保证数据的一致性。(支付中变为支付成功

  • 相比于本地事务的ADIC强一致性模型,BASE理论提出通过牺牲一定的强一致性来获得可用性;

  • 不同业务单元和业务组件对数据一致性的要求不一样,因此分布式系统中BASE理论和ACID特性会结合使用。


本地事务四大特性(ACID)


  • 原子性(atomicity):一个事务中的所有操作,不可分割,要么全部成功,要么全部失败;

  • 一致性(consistency):一个事务执行前与执行后数据的完整性必须保持一致;

  • 隔离性(isolation):一个事务的执行,不能被其他事务干扰,多并发时事务之间要相互隔离;

  • 持久性(durability):一个事务一旦被提交,它对数据库中数据的改变是永久性的


分布式事务方案XA/JTA/2PC/3PC/TCC/SAGA的介绍可以参照

https://www.jianshu.com/p/60a100eee74a

以上是关于高并发中间件1-基于MQ的分布式事务解决方案的主要内容,如果未能解决你的问题,请参考以下文章

阿里云消息中间件(MQ)探秘

阿里中间件四面:高并发+框架+MQ +MyCat+锁机制+分布式

用MQ消息实现分布式事务关键点

高并发分布式消息中间件技术ActiveMQ事务

高并发分布式消息中间件技术ActiveMQ事务

MQ在高并发环境下,如果队列满了,如何防止消息丢失?