这是我参与「 第五届青训营 」伴学笔记创作活动的第 13 天
CAP理论
CAP即:
- Consistency(一致性)
- Availability(可用性)
- Partition tolerance(分区容错性)
但是CAP理论说的是:一个分布式系统,不可能同时做到这三点。
三类系统:
- CA系统:传统数据库的代表
- AP系统:放弃强一致性,保证高可用,不少nosql存储系统采用
- CP系统:放弃可用性,保证数据一致性
当出现故障的时候,如何选择不同的CAP系统,以及将带来什么样的影响
- CP系统:故障发生时,为了避免读到不一致的数据,可能拒绝访问
- AP系统:故障发生时,为了保证可用性,允许不同进程读到不同的数据
针对故障场景,可以通过故障转移的方式,做一个相对较优的解决方式:允许一个进程作为Master,其他进程作为Backup,当故障时将请求转移给Backup进行处理
ACID理论
ACID理论是针对CA系统而言的,是数据库为了保证事务正确性而提出的一种理论,它包含四个约束:
- 原子性(Atomicity):组成事务的一组操作,要么全部成功,要么全部失败,不会在中间的某个环节结束。如果在事务的执行过程中,某个操作失败了,数据库会回滚到事务开始前的状态,就像这个事务从来没有执行过一样。
- 一致性(Consistency):事务执行前后,数据库的完整性没有被破坏,事务执行的前后都是合法的数据状态。
- 隔离性(lsolation)︰数据库允许多个事务并发地对数据进行读写。多个事务并发执行会造成脏读,不可重复读,幻读,而隔离性可以防止多个事务交叉执行导致的数据不一致问题。事务的隔离级别有读未提交,读已提交,可重复读,串行化。
- 持久性(Durability):事务提交后,对数据的修改是持久的,不会因为外部原因丢失。
BASE理论
BASE理论是针对AP系统而言的,是对可用性和一致性的权衡
Basically Available(基本可用)
假设系统,出现了不可预知的故障,但还是能用。
Eventually consistent(最终一致性)
最终一致性的系统不承诺写入数据成功后,立刻就从系统中读出最新的数据,也不承诺具体多久之后可以读到最新的数据,而是尽可能保障特定时间级别之后的数据可用。不管怎样数据最终一定能够达到一致的状态。
Soft state(软状态)
软状态顾名思义就是可以变动的状态,强调的是数据状态处于一种临界状态。允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性。