分布式事务处理理论

2024-08-26 18:18

本文主要是介绍分布式事务处理理论,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

      对于集中式事务处理系统或者本地事务处理系统,我们通常应用ACID模型来保证数据的严格一致性。但是随着分布式系统的出现,分布式事务的处理问题也显现出来了。很显然,我们用ACID模型处理分布式事务是不能胜任的,很可能会导致分布式系统的可用性和严格一致性之间出现冲突。这两者对消费者来说是缺一不可的,那么如何保证分布式的事务呢?     

 

CAP理论: 

       CAP原理,即布鲁尔定理,它指出对于一个分布式计算系统来说,不可能同时满足以下三点:                            一致性(Consistency) (所有节点在同一时间具有相同的数据)

          可用性(Availability) (保证每个请求不管成功或者失败都有响应)

          分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)

 

CAP原理的核心理论是:

       一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,因此,根据CAP原理,将NOSQL数据库分成了满足CA原则,满足CP原则和满足AP原则三大类,这三大原则各自的优缺点如下:

1、CA -单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大

2、CP -满足一致性,分区容错性的系统,通常性能不是特别高

3、AP -满足可用性,分区容错性的系统,通常可能对一致性要求低一点

        针对当前网络硬件实际情况,肯定会出现延迟丢包等网络问题,所以分区容错性是我们必须要实现的,所以我们在搭建分布式系统的时候,只要在一致性和可用性之间考虑选择。针对当前各大运营商的使用情况来看,是允许有少量的延迟的,所以我们可以降低一点对一致性的要求,所以常用的还是AP原则。

  

BASE原则:

       由上面的讲解可以知道,分区容错是分布式系统的一个基本要求,那么我们怎么在一致性和可用性之间根据业务寻求一种平衡呢?---于是BASE出现了


       BASE是对CAP中一致性和可用性权衡的结果,其来源对大规模互联网系统分布式实践的总结,是基于CAP定理逐步演化而来的,其核心思想就是如下: BASE是NoSQL数据库通常对可用性及一致性的弱要求原则。

        

        BASE就是三个术语的缩写:

        1、基本可用:分布式系统在出现不可预知故障的时候,允许损失部分可用性;典型就是:响应时间上的损失;功能上的损失

        2、软状态:允许系统中的数据出现中间状态,并认为该中间状态的存在不会影响系统的整体可用性。通俗理解:允许系统在不同节点的数据副本之间的数据同步存在延时

        3、最终一致:保证数据最终能够达到一致,不需要实时保证系统数据的强一致性。

              存在5种变种:因果一致性、读己之所写、会话一致性、单调读一致性、单调写一致性

           它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能改观。 

 在实际应用中,我们会根据业务对数据一致性的不同要求,结合ACDI和BASE使用。

这篇关于分布式事务处理理论的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109319

相关文章

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看

开源分布式数据库中间件

转自:https://www.csdn.net/article/2015-07-16/2825228 MyCat:开源分布式数据库中间件 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷。 MyCat的目标就是:低成本地将现有的单机数据库和应用平滑迁移到“云”端

laravel框架实现redis分布式集群原理

在app/config/database.php中配置如下: 'redis' => array('cluster' => true,'default' => array('host' => '172.21.107.247','port' => 6379,),'redis1' => array('host' => '172.21.107.248','port' => 6379,),) 其中cl

基于MySQL实现的分布式锁

概述 在单机时代,虽然不需要分布式锁,但也面临过类似的问题,只不过在单机的情况下,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加锁的机制,即当某个线程获取到这个资源后,就立即对这个资源进行加锁,当使用完资源之后,再解锁,其它线程就可以接着使用了。例如,在JAVA中,甚至专门提供了一些处理锁机制的一些API(synchronize/Lock等)。 但是到了分布式系统的时代,这种

多数据源的事务处理总是打印很多无用的log日志

之前做了一个项目,需要用到多数据源以及事务处理,在使用事务处理,服务器总是打印很多关于事务处理的log日志(com.atomikos.logging.Slf4jLogger),但是我们根本不会用到这些log日志,反而使得查询一些有用的log日志变得困难。那要如何屏蔽这些log日志呢? 之前的项目是提高项目打印log日志的级别,后来觉得这样治标不治本。 现在有一个更好的方法: 我使用的是log

Kafka 分布式消息系统详细介绍

Kafka 分布式消息系统 一、Kafka 概述1.1 Kafka 定义1.2 Kafka 设计目标1.3 Kafka 特点 二、Kafka 架构设计2.1 基本架构2.2 Topic 和 Partition2.3 消费者和消费者组2.4 Replica 副本 三、Kafka 分布式集群搭建3.1 下载解压3.1.1 上传解压 3.2 修改 Kafka 配置文件3.2.1 修改zookeep

Spring Cloud整合Seata实现分布式事务

文章目录 1.Seata1.1 官网1.2 下载1.3 通过安装包运行seata1.3.1 解压seata-server-1.3.0.zip1.3.2 修改 conf/file.conf 配置文件1.3.3 修改conf/registry.conf配置文件1.3.4 添加seata配置信息到nacos1.3.5 配置seata服务端数据库表结构1.3.6 启动seata 2.Spring