死磕Zookeeper系列-1-CAP与BASE理论

1. ACID

1、原子性 Atomicity
2、一致性 Consistency
3、隔离性 Isolation
4、持久性 Durability

1.1 原子性[A]

- 保证事务中的所有操作全部执行或者全部不执行.

1.2 一致性[C]

- 保证事务操作之前和之后都是一致的.

1.3 隔离性[I]

- 多个事务并发的话,应该和多个事务串行执行效果一致.
- 事务的四个隔离级别:
    - 串行化:保证所有情况下都不会发生。【锁表】
    - 可重复读:会出现幻读。【会锁定所读取的所有行】
    - 读未提交:会出现脏读、幻读、不可重复读。【隔离级别最低,并发性能高】
    - 读已提交(默认): 会出现幻读、不可重复读。【锁住正在读取的行】
    * 总结:四个级别逐渐增强。每个级别分别解决一个问题,事务级别越高,性能越差,大多数环境下ReadCommit情况下就可以了。
- 脏读、幻读、不可重复读:
    - 脏读:一个事务读取了另一个事务`未提交的数据`,而这个数据有可能被回滚。
    - 幻读:事务不同独立执行时发生的一种现象。事务1读取指定Where条件的结果集,然后事务2插入一条新数据,而这条新数据刚好满足事务1所查询的条件,然后事务1再次查询时,看到了事务2新提交的数据。【幻读强调的是新增、删除。同样的条件,两次查询的记录数不同】
    - 不可重复读:在一个事务范围内,两次查询得到不同的结果。【不可重复读强调的是修改。同样的条件,两次查询的记录值不同】

1.4 持久性[D]

- 事务执行完之后,对于数据库的影响应该是持久的.

2. CAP

1、一致性 Consistency
2、可用性 Availablity
3、分区容错性 Partition Tolerance

2.1 一致性[C]

- 任何操作都是原子的.发生在后面的事件可以看到前面发生事件的结果;
- 注意:这里的一致性是指**强一致性**;

2.2 可用性[A]

- 对于用户的每一个请求**在有限时间内**内**返回结果**.
- 注意:
    1. "有限时间内": 是指 对于用户的请求,系统必须存在合理的响应时间,否则用户便会对系统感到失望;
    2. "返回结果":是指 响应结果能够正常反映请求的处理结果,即成功或失败,而不是让用户困惑的结果.

2.3 分区容错性[P]

- 系统在遇到任何网络故障时,仍能对外提供可用性和一致性服务,除非整个网络发生故障.
死磕Zookeeper系列-1-CAP与BASE理论_第1张图片
CAP理论
 * 一个分布式系统无法同时满足以上三个需求,因此在实际运用时,我们就要抛弃其中一项.
 * CAP定理应用:
    1. 放弃P:放弃P就意味着放弃了扩展性.就是把所有数据放在一个分布式节点上.
    2. 放弃A:系统遇到故障时,在等待时间内系统无法对外提供正常服务,即不可用.
    3. 放弃C:放弃强一致性,而保持数据的最终一致性.引入**时间窗口**概念.
 * 对于分布式系统而言,网络问题是必定会出现的异常情况,因为P是一个分布式系统必须面对和解决的问题.
 * 所以往往要根据业务权衡C和A之间的选择.


3. BASE

1、基本可用:Basic Available
2、弱状态:Soft State
3、最终一致性:Eventually Consistent
* BASE理论是对CAP中**一致性和可用**性的权衡总结.

3.1、基本可用[BA]

- 1. 概念
    分布式系统在出现故障时,允许**损失部分可用性**,但是系统还是可用的.

3.2、弱状态[S]

- 1. 概念:
    和ACID强状态相对应,是指系统中允许存在的**中间状态**.
- 2. 不会影响系统的整体可用性;

3.3、最终一致性[E]

- 1. 概念:系统中的数据,经过同步之后最终能够达到一个一致的状态.
- 2. 最终一致性的变种:
    2.1 因果一致性:
    2.2 读己之所写:
    2.3 会话一致性:
    2.4 单调读一致性:
    2.5 单调写一致性:

也可查看https://www.zybuluo.com/yulongsun/note/1011165

你可能感兴趣的:(死磕Zookeeper系列-1-CAP与BASE理论)