分布式事务处理理论

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

相关文章

redis+lua实现分布式限流的示例

《redis+lua实现分布式限流的示例》本文主要介绍了redis+lua实现分布式限流的示例,可以实现复杂的限流逻辑,如滑动窗口限流,并且避免了多步操作导致的并发问题,具有一定的参考价值,感兴趣的可... 目录为什么使用Redis+Lua实现分布式限流使用ZSET也可以实现限流,为什么选择lua的方式实现

Seata之分布式事务问题及解决方案

《Seata之分布式事务问题及解决方案》:本文主要介绍Seata之分布式事务问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Seata–分布式事务解决方案简介同类产品对比环境搭建1.微服务2.SQL3.seata-server4.微服务配置事务模式1

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Redis分布式锁使用及说明

《Redis分布式锁使用及说明》本文总结了Redis和Zookeeper在高可用性和高一致性场景下的应用,并详细介绍了Redis的分布式锁实现方式,包括使用Lua脚本和续期机制,最后,提到了RedLo... 目录Redis分布式锁加锁方式怎么会解错锁?举个小案例吧解锁方式续期总结Redis分布式锁如果追求

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的目标就是:低成本地将现有的单机数据库和应用平滑迁移到“云”端