资讯专栏INFORMATION COLUMN

分布式事务

junfeng777 / 2599人阅读

摘要:也就是说在分布式系统下对多个数据库进行事务的统一管控,保证数据的一致性。真实系统应当是与的混合体总结分布式系统中,最重要的是满足业务需求,而不是追求抽象绝对的系统特性

分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。——百度百科如是说。也就是说在分布式系统下对多个数据库进行事务的统一管控,保证数据的一致性。

当数据库单表数据超过1000W行时,就需要考虑分库分表了。这个时候单个数据库的ACID已经不能适应这种情况了,就涉及到分布式事务了。

另外目前微服务甚是火热,微服务架构本质就是分布式服务化;那么服务之间互相访问时,也就存在了跨事务域操作;此时为了保证数据一致性,同样涉及到分布式服务了。

尤其是在订单、资金业务等核心业务流程中,就必须要有一个可靠的分布式事务解决方案来保证数据的准确性和可靠性。

常用分布式事务解决方案:

刚性事务

全局事务(标准的分布式事务)-XA
JavaEE平台中的分布式事务实现:
1、JTA(Java Transaction API):面向应用、应用服务器与资源管理器的高层事务接口。
2、JTS(Java Transaction Service):JTA事务管理器的实现标准,向上支持JTA,向下通过CORBA OTS实现跨事务域的互相操作性
3、EJB:基于组件的应用编程模型,通过声明式事务管理进一步简化事务应用的编程。
优点:
简单一致的编程模型
跨事务域分布处理的ACID保证
缺点:
DTP(Distributed Transaction Processing Reference Model)模型的局限性

柔性事务

可靠消息最终一致性

业务场景:如对接某城市订票业务
涉及平台:
业务平台(A):APP开发商业务开发平台
支付平台(B):三方支付平台,四方支付平台等
三方业务平台(C):如某城市已有的在线售票系统等
消息处理平台(D):消息确认、恢复等
任务调度平台(E):确保各数据状态一致,如有异常则继续发送消息
系统设计:订单记录、交易记录、支付记录、消息记录、消息队列

注:消息的重复发送会导致业务处理接口出现重复调用的问题,所以接口的业务逻辑要实现幂等性设计,在实际的业务应用场景中,业务接口的幂等性设计,常结合可查询操作一起使用。

TCC(两阶段型、补偿型)

最大努力通知型

BASE理论:

BA:Basic Availability基本业务可用性(支持分区失败)
S:Soft state柔性状态(状态允许有短时间不同步,可异步)
E:Eventual consistency最终一致性(数据最终一致,可不是实时一致)
其中ACID,原子性与持久性必须根本保障;为了可用性、性能与降级服务的需要,只有降低一致性与隔离性的要求。
酸碱平衡(ACID-BASE Balance)

CAP定理:

Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)
对于共享数据系统,最多只能同时拥有CAP其中的两个,无法兼得。
真实系统应当是ACID与BASE的混合体

总结:分布式系统中,最重要的是满足业务需求,而不是追求抽象、绝对的系统特性

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68598.html

相关文章

  • 聊聊布式事务

    摘要:分布式事务技术理论定理。接下来我们看看分布式事务有哪几种实现方案。基于协调者与参与者的思想设定,分别提出了与实现分布式事务。 这次使用分布式事务框架过程中了学习了一些分布式事务知识,所以本文我们就来聊聊分布式事务那些事。首先我们先回顾下什么是事务。 事务 什么是事务?这个作为后端开发,日常开发中只要与数据库有交互,肯定就会使用过事务。现在摘抄一段wiki的解释,解释下什么是事务。 是数...

    wemallshop 评论0 收藏0
  • [转] 布式事务

    摘要:本质上来说,分布式事务就是为了保证不同数据库的数据一致性。常见的分布式事务解决方案基于协议的两阶段提交是一个分布式事务协议,由提出。 转自:http://www.cnblogs.com/zengke... 1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由...

    Coly 评论0 收藏0
  • 布式事务中间件Seata的设计原理

    摘要:如上图所示,的实际上是已中间件的形式放在应用层,不用依赖数据库对协议的支持,完全剥离了分布式事务方案对数据库在协议支持上的要求。 微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 在微服务架构体系下,我们可以按照业务模块分层设计,单独部署,减轻了服务部署压力,也解耦了业务的耦合,避免了应用逐渐变成一个庞然怪物,从而可以轻松扩展,...

    Kylin_Mountain 评论0 收藏0
  • 布式事务解决方案实战

    摘要:对于设计分布式系统来说不仅仅是分布式事务的架构师来说,就是你的入门理论。分布式事务解决方案有了上面的理论基础后,这里介绍开始介绍几种常见的分布式事务的解决方案。是否真的要分布式事务在说方案之前,首先你一 事务的具体定义:事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整...

    i_garfileo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<