首页 > 编程知识 正文

CAP中的A与分布式事务BASE特性中的A意义相同,cap base 分布式事务

时间:2023-05-05 18:55:34 阅读:243134 作者:4005

目录

前言

事务的一致性

CAP理论

BASE理论


前言

在之前的MySQL(二)、事务 文章中我们介绍了MySQL事务的四个特性(ACID),本系列我们来讲解在分布式系统中事务可能遇到的问题以及对应的解决方案,本篇先来讲一下CAP以及BASE理论。

事务的一致性 强一致性:系统中的某个数据被成功更新后,后续的访问都能看到更新后的值;弱一致性:系统中的某个数据被更新后,后续的访问可能得到更新后的值,也可能是更改前的值;最终一致性:系统中的某个数据被更新,经过一段时间后,最终所有的访问都是更新的值;

刚性事务:遵循ACID原则,强一致性;

柔性事务:遵循BASE理论,最终一致性;

事务的四个特性(ACID):

原子性(Atomicity):事务被视为一个不可分割的最小工作单元,事务中的所有操作要么全部提交成功,要么全部失败回滚;一致性(Consistency):数据库总是从一个一致性的状态转换到另外一个一致性的状态;隔离性(Isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的;持久性(Durability):一旦事务提交,则其所做的修改就会永久保存到数据库中;

柔性事务对事务四个特性(ACID)的支持情况:

原子性:完全支持。一致性:只提供最终一致性支持。隔离性:不完全保证,通常为了系统的吞吐和性能,会一定程度上放弃对隔离性的要求。持久性:完全支持。CAP理论

CAP理论:在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance),这三个要素最多只能同时实现两点,不可能三者兼顾。

一致性(Consistency):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本) ;可用性(Availability):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性); 分区容忍性(Partition tolerance):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择;

图中重叠的部分就是在分布式环境下,必须做出的取舍:要么CP,要么AP,要么AC,但是不存在CAP。

CP:牺牲可用性。复制同步的协议一般使用严格的法定数协议 (Paxos、Raft、ZAB)或者2PC协议。CP类型的系统有MongoDB、HBase、 Zookeeper、Redis等。AP:牺牲一致性。复制同步的协议一般使用非严格的法定数协议。AP类型的系统有 Couch DB、Cassandra、Amazon Dynamo等。AC:抛开RDBMS的Oracle和MySQL不谈,分布式系统中宣称是CA系统的有谷歌的Spanner 和阿里的OceanBase。

问:为什么分布式系统中无法同时保证一致性和可用性?

答:首先一个前提,对于分布式系统而言,分区容错性是一个最基本的要求,因此基本上我们在设计分布式系统的时候只能从一致性(C)和可用性(A)之间进行取舍。

如果保证了一致性(C):对于节点N1和N2,当往N1里写数据时,N2上的操作必须被暂停,只有当N1同步数据到N2时才能对N2进行读写请求,在N2被暂停操作期间客户端提交的请求会收到失败或超时。显然,这与可用性是相悖的。

如果保证了可用性(A):那就不能暂停N2的读写操作,但同时N1在写数据的话,这就违背了一致性的要求。

CAP和ACID中的A和C是完全不一样的:

C的区别:

ACID一致性是有关数据库规则,数据库总是从一个一致性的状态转换到另外一个一致性的状态;CAP的一致性是分布式多服务器之间复制数据令这些服务器拥有同样的数据,由于网速限制,这种复制在不同的服务器上所消耗的时间是不固定的,集群通过组织客户端查看不同节点上还未同步的数据维持逻辑视图,这是一种分布式领域的一致性概念;

A的区别:

ACID中的A指的是原子性(Atomicity),是指事务被视为一个不可分割的最小工作单元,事务中的所有操作要么全部提交成功,要么全部失败回滚;CAP中的A指的是可用性(Availability),是指集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求;BASE理论

BASEBasically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)的缩写。

在分布式系统中,CAP理论是指导思维,而BASE理论是CAP理论中AP的延伸,是对 CAP 中的一致性和可用性进行一个权衡的结果,核心思想是:即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。

基本可用(Basically Available):指分布式系统在出现故障的时候,允许损失部分可用性,保证核心可用。柔性状态(Soft state):指允许系统存在中间状态,并认为该中间状态不会影响系统整体可用性。比如,允许不同节点间副本同步的延时就是柔性状态的体现。最终一致性(Eventually consistent):指系统中的所有副本经过一定时间后,最终能够达到一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

前面提到的柔性事务就是BASE理论的实现,在之后的文章中会详细讲解刚性事务和柔性事务的分类及实现。

希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢! 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。