从ACID到CAP及BASE
从ACID到CAP及BASE
ACID
说到事务,肯定想到事务的ACID特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
1.原子性:全部成功或者全部失败。
2.一致性:不好描述,取个例子:银行转账,TOM给JIM转1000元,TOM的账户减少1000,同时JIM的账户要增加1000。不允许出现只减少或者只增加的情况。
3.隔离性:事务之间不能项目干扰。包含四种隔离级别,即read_uncommitted、read_committed、repeatable_read、serializable。
3.1 read_uncommitted:该隔离级别会发生脏读。举个例子,事务A更新字段的值从1到10,事务B在此过程中可以读到该字段的值1,2,3,4,5…10。
3.2 read_committed:该隔离级别不可重复读。举个例子,事务A更新字段的值从1到10,事务B在此过程中只能读到事务A提交后的值10。若此时有另外一个事务执行更新字段从10到20,那么事务B再次读取会读到20。
3.3 repeatable_read:该隔离级别会发生幻读。举个例子,事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。
3.4serializable:最严格的事务隔离级别。要求所有事务都串行执行,不能并发。
4.持久性:事务一旦提交,事务的数据就会永久保存下来。
提供一个隔离级别对比表格:
隔离级别 |
脏读 |
可重复读 |
幻读 |
Read_uncommitted |
存在 |
不可以 |
存在 |
Read_committed |
不存在 |
不可以 |
存在 |
Repeatable_read |
不存在 |
可以 |
存在 |
Serializable |
不存在 |
可以 |
不存在 |
CAP
提到分布式事务,应该就会想到CAP。一个分布式系统是不可以同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)
1.一致性:分布式系统中多个副本数据保持相同。
2.可用性:系统提供的服务处于可用状态,能够在有限的时间后返回结果。
3.分区容错性:分布式系统在遇到任何网络分区故障的时候,必须能够保证对外提供给满足一致性和可用性的服务,除非整个网络出现问题。
以上三点,对于一个分布式系统不可能同时满足,但是分区容错性是最基本的。
放弃CAP定理 |
描述 |
放弃P |
如果希望避免系统出现分区容错性问题,一种较为简单的做法是将所有数据放在一个分布式节点上。这样至少不会碰到由于网络分区带来的负面影响,如果放弃P,就意味着放弃系统可扩展性。 |
放弃A |
如果遇到网络分区故障或者其他故障,那么受影响的服务需要等待一定的时间,在等待期间服务无法对外提供服务。 |
放弃C |
放弃一致性是放弃数据的强一致性,保留数据的最终一致性。 |
BASE
base是Basically Available(基本可用)、soft state(软状态)、Eventually consistent(最终一致性)的缩写。
基本可用:分布式系统出现不可预知的故障时,允许损失部分可用性。例如响应时间上的损失、功能上的损失。
软状态:允许系统的在不同的节点的数据副本之间进行数据同步时存在延迟。
最终一致性:本质是保证数据最终能达到一致。包括因果一致性、读已之所写、会话一致性、单调读一致性、单调写一致性。
从ACID到CAP及BASE的更多相关文章
- 分布式理论系列(一)从 ACID 到 CAP 到 BASE
分布式理论系列(一)从 ACID 到 CAP 到 BASE 一.ACID 1.1 事务的四个特征: (1) Atomic(原子性) 事务必须是一个原子的操作序列单元,事务中包含的各项操作在一次执行过程 ...
- ACID、Data Replication、CAP与BASE
ACID 在传数据库系统中,事务具有ACID 4个属性. (1) 原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行. (2) 一致性(Consiste ...
- NoSQL的三大基石(CAP、BASE和最终一致性)
CAP,BASE和最终一致性是NoSQL数据库存在的三大基石.而五分钟法则是内存数据存储了理论依据.这个是一切的源头. CAP C: Consistency 一致性 A: Availability 可 ...
- 了解的CAP和BASE等理论
CAP,BASE和最终一致性是NoSQL数据库存在的三大基石.而五分钟法则是内存数据存储的理论依据.这个是一切的源头. 几个名词解释: 网络分区:俗称“脑裂”.当网络发生异常情况,导致分布式系统中部分 ...
- 分布式CAP与BASE理论
参考: CAP和BASE理论 https://juejin.im/post/5d720e86f265da03cc08de74 https://github.com/changmingxie/tcc-t ...
- 分布式必备理论基础:CAP和BASE
大家好,我是老三,今天是没有刷题的一天,心情愉悦,给大家分享两个简单的知识点:分布式理论中的CAP和BASE. CAP理论 什么是CAP CAP原则又称CAP定理,指的是在一个分布式系统中,Consi ...
- 事务,acid,cap,paxos随笔
事务ACID四个特性: A:原子性(Atomicity)C:一致性(Consistency)I:隔离性(Isolation)D:持久性(Durability) 原子性:语句要么全执行,要么全不执行,是 ...
- 闲聊CAP、BASE与XA
CAP理论与BASE理论 首先要和大家说的就是大名鼎鼎的CAP理论与BASE理论了,这两个理论与解决分布式事务问题是密切相关的. 其实网上有很多关于CAP与BASE相关的文章,一写就写了一大堆,篇幅很 ...
- 分布式系列文章——从ACID到CAP/BASE
事务 事务的定义: 事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元(Unit),狭义上的事务特指数据库事务. 事务的作用: 当多个应用程序并发访问 ...
随机推荐
- django 自定义auth中user登陆认证以及自写认证
第一种: 重写自定义auth中user登陆认证模块, 引入MobelBackend from django.contrib.auth.backends import ModelBackend 重写验证 ...
- whistle浏览器抓包(以火狐浏览器为例)
环境:whistle:1.14.6 whistle浏览器抓包 以火狐浏览器为例 1.启动whistle 使用w2 start启动whistle. 退出cmd后,whistle自动关闭了,所以每次使用w ...
- 『Python』matplotlib初识
1. 核心原理 使用matplotlib绘图的原理,主要就是理解figure(画布).axes(坐标系).axis(坐标轴)三者之间的关系. 下面这幅图更详细: 以"美院学生张三写生画画&q ...
- JuiceFS v0.17 发布,通过 1270 项 LTP 测试!
小伙伴们大家好,JuiceFS v0.17 在国庆小长假来临之际如期发布了!这是我们在 2021 年秋季推出的第二个版本,让我们直奔主题,看看都有哪些新变化吧. 本次更新累计 80+ 提交,共有 9 ...
- MySQL的本地事务、全局事务、分布式事务
本地事务 事务特性:ACID,其中C一致性是目的,AID是手段. 实现隔离性 写锁:数据加了写锁,其他事务不能写也不能读. 读锁:数据加了读锁,其他事务不能加写锁可以加读锁,可以允许自己升级为写锁. ...
- Java基础之(八):顺序结构与选择结构
顺序结构 Java的基本结构就是顺序结构 顺序结构是最简单的算法结构 它是任何一个算法都离不开的一种基本算法结构. 例子: public static void main(String[] args) ...
- GoLang设计模式10 - 中介者模式
中介者模式是一种行为型设计模式.在中介者模式中创建了一个中介对象来负责不同类间的通信.因为这些类不需要直接交互,所以也就能避免它们之间的直接依赖,实现解耦的效果. 中介者模式的一个典型案例是老式小火车 ...
- 结对编程——带UI的小初高数学学习软件
一.简介 本次项目要求: 1.所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限): 2.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: ...
- 好奇!仅 13kB 大小的游戏,源码长啥样?
这个马赛克风格的表情正好 13Kb,有人竟然能用一个表情大小的空间,制作个游戏出来.我就不信这么点的地儿,能写出个花来?游戏能好玩吗?因为这些游戏点开就能玩,我抱着试一试的心态把玩了一会. 事实证明是 ...
- 3.4 Common Principles 通用原则
3.4 Common Principles 通用原则 Before going into details, let's see some overall DDD principles; 在讨论细节之前 ...