分布式事务处理理论

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

相关文章

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

基于MongoDB实现文件的分布式存储

《基于MongoDB实现文件的分布式存储》分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考... 目录一、引言二、GridFS 原理剖析三、Spring Boot 集成 GridFS3.1 添加依赖

Redis实现分布式锁全解析之从原理到实践过程

《Redis实现分布式锁全解析之从原理到实践过程》:本文主要介绍Redis实现分布式锁全解析之从原理到实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景介绍二、解决方案(一)使用 SETNX 命令(二)设置锁的过期时间(三)解决锁的误删问题(四)Re

Gradle下如何搭建SpringCloud分布式环境

《Gradle下如何搭建SpringCloud分布式环境》:本文主要介绍Gradle下如何搭建SpringCloud分布式环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Gradle下搭建SpringCloud分布式环境1.idea配置好gradle2.创建一个空的gr

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

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

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

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

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

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

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