什么是 CAP 定理?
.1 一致性(Consistency)
一致性指“all nodes see the same data at the same time”,即更新操做成功并返回客户端完成后,全部节点在同一时间的数据彻底一致。
这里的一直性是指的强一致性,通常关系型数据库就有强一致性特性。node
2,可用性(Availability)
可用性指“Reads and writes always succeed”,即服务一直可用,并且是正常响应时间。
异地双活或者本地多活,可是一个区域的服务挂掉的状况下 其余地区能正常提供服务,而且是正常响应时间数据库
3,分区容错性(Partition tolerance)
分区容错性指“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然可以对外提供知足一致性和可用性的服务。
区域故障也能稳定提供服务
CAP权衡
CAP理论,咱们知道没法同时知足一致性、可用性和分区容错性这三个特性。通常都是CP或者AP
CP 多用于金融系统
AP 用于普通分布式架构
BASE 理论
解决BASE理论的延生
BASE理论是对CAP中的一致性及可用性进行一个权衡的结果,其核心思想是:咱们没法作到强一致性,那么咱们能够经过牺牲强一致性得到可用性, 通常应用于服务化系统的应用层或者大数据处理系统中,采用适当的方式 达到最终一致性。网络
BA:Basically Available(基本可用)
基本可用:是对A(可用性)的一个妥协,好比秒杀场景下,或者雪崩的业务场景下,能够降级处理,使核心功能可用,而不是全部的功能可用。或者延迟完成,好比经过削峰限流,来延迟响应架构
S:Soft state(软状态)
指容许部分节点数据存在必定的延时,这个延时不影响可用性。例如一次写操做只更新了一个结点就返回成功。那么其余节点和这个节点的数据时不一致的。此时的数据状态就是软状态。该状态不能一直存在,必需要有个期限,系统保证在没有后续更新的前提下,在这个期限后,系统最终返回上一次更新操做的值,从而达到数据的最终一致性,这个容忍期限(不一致窗口的时间)取决于通讯延迟,系统负载,数据复制方案设计,复制副本个数等,DNS是一个典型的最终一致性系统并发
E:Eventually consistent(最终一致性)
指最终数据要实现一致性,例如:软状态的数据最终咱们要经过一些手段将数据同步到其余数据节点上。例如使用mq。
ACID规则
其中 又去关系性数据库遵循的ACID规则有所区别
A (Atomicity) 原子性
原子性很容易理解,也就是说事务里的全部操做要么所有作完,要么都不作,事务成功的条件是事务里的全部操做都成功,只要有一个操做失败,整个事务就失败,须要回滚。分布式
好比银行转帐,从 A 帐户转 100 元至 B 帐户,分为两个步骤:1)从 A 帐户取 100 元;2)存入 100 元至 B 帐户。这两步要么一块儿完成,要么一块儿不完成,若是只完成第一步,第二步失败,钱会莫名其妙少了 100 元。ide
C (Consistency) 一致性
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库本来的一致性约束。大数据
例如现有完整性约束 a+b=10,若是一个事务改变了 a,那么必须得改变 b,使得事务结束后依然知足 a+b=10,不然事务失败。设计
I (Isolation) 隔离性
所谓的隔离性是指并发的事务之间不会互相影响,若是一个事务要访问的数据正在被另一个事务修改,只要另一个事务未提交,它所访问的数据就不受未提交事务的影响。事务
好比如今有个交易是从 A 帐户转 100 元至 B 帐户,在这个交易还未完成的状况下,若是此时 B 查询本身的帐户,是看不到新增长的 100 元的。
D (Durability) 持久性持久性是指一旦事务提交后,它所作的修改将会永久的保存在数据库上,即便出现宕机也不会丢失。