分布式系统基础
CAP 理论
-
Consistency(一致性)
在分布式系统中的所有数据备份,在同一时刻是否同样的值(等同于所有节点访问同一份最新的数据副本)
-
Availability(可用性)
在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求(对数据更新具备高可用性)
-
Partition tolerance(分区容错性)
系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须在
CAP
三者之间做出选择。
BASE 理论
-
基本可用(Basically Available)
出现了不可预知的故障时,能带有一定的损失地继续使用
-
软状态(Soft state)
允许系统中的数据存在中间状态,与
原子性
相对 -
最终一致(Eventually consistent)
上面说软状态,然后不可能一直是软状态,必须有个时间期限
-
因果一致性(Causal consistency)
如果节点 A 在更新完某个数据后通知了节点 B,那么节点 B 之后对该数据的访问和修改都是基于 A 更新后的值。于此同时,和节点 A 无因果关系的节点 C 的数据访问则没有这样的限制
-
读己之所写(Read your writes)
一个节点自身总是能访问到自身更新过的最新值,而不会看到旧值
-
会话一致性(Session consistency)
会话一致性将对系统数据的访问过程框定在了一个会话当中:系统能保证在同一个有效的会话中实现 “读己之所写” 的一致性,也就是说,执行更新操作之后,客户端能够在同一个会话中始终读取到该数据项的最新值
-
单调读一致性(Monotonic read consistency)
如果一个节点从系统中读取出一个数据项的某个值后,那么系统对于该节点后续的任何数据访问都不应该返回更旧的值
-
单调写一致性(Monotonic write consistency)
一个系统要能够保证来自同一个节点的写操作被顺序的执行
-
ACID 理论
-
Atomicity(原子性)
一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样
-
Consistency(一致性)
在事务开始之前和事务结束以后,数据库的完整性没有被破坏
数据完整性是指存储在数据库中的数据正确无误并且相关数据具有一致性
-
Isolation(隔离性)
数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致
-
Durability(持久性)
事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失