CAP理论
CAP是一致性(Consistency)、可用性(Availiability)、分区容错性(Partition Tolerance)首字母的缩写,CAP理论是分布式领域著名的理论
- 一致性(Consistency):一致性要求对所有数据节点的数据副本的修改是原子操作的,要么所有的数据副本都执行成功,要么在所有的数据副本都执行失败
一致性存在的特点:
- 存在数据同步的过程,应用程序的写操作存在一定的延迟
- 为了保证各节点数据的一致性,需要对相应的资源进行锁定,待数据同步完成后在释放锁定的资源
- 如果数据写入并且同步成功,所有节点都会返回最新的数据,相反地,如果数据写入或者同步失败,所有节点都不会存在最新写入的数据
- 可用性(Availiability):指的是客户端访问数据的时候,能够快速得到响应,处于这个状态的系统,每个存储节点的数据可能会不一致,并不要求应用程序向数据库写入数据时能够立刻读取到最新的数据,任何事务的操作都可以得到响应,不会出现超时或者响应错误的情况
可用性存在的特点:
- 所有的请求都会被响应
- 不会存在响应超时或者响应错误的情况
- 如果对不同的应用程序设定了超时响应时间,一旦超过这个时间,系统将不可用
- 分区容错性(Partition Tolerance):将存储系统部署并且运行在多个不同的节点上,并且这些节点处于不同的网络中,这就形成了网络分区,不可避免的会出现网络问题,导致节点之间的通信出现失败,但是,此时系统仍能对外提供服务,这就是分区容错性
分区容错性的特点:
- 一个节点挂点,不影响其他节点对外提供服务
- 分区容错性是分布式系统必须必备的基础能力
CAP的组合
系统在满足分区容错性的前提下,一致性和可用性就是矛盾的,所以最终会有AP、CP、CA三种组合方式
- AP:大部分分布式系统会采用AP的方式,舍弃了一致性,这并不代表就真的放弃了一致性,此时,架构设计方案采用了最终一致性,允许多个节点的数据在一定的时间内存在差异,一段时间后达到数据一致的状态
- CP:放弃可用性,追求系统的一致性和分区容错性,这种组合方式对于数据的一致性要求比较高,追求的是强一致性(银行系统居多)
- CA:放弃分区容错性,追求系统的一致性和可用性,此时系统不会进行分区,也不会考虑网络不通和节点挂点的问题,主数据库和从数据库不在进行数据的同步,此时系统也不再是一个标准的分布式系统
Base理论
Base理论是对CAP理论的一个拓展,它通过牺牲强一致性来获得可用性,Base理论中的Base是基本可用(Basically Available)、软状态(Soft State)和最终一致性(Eventually Consistent)的缩写,系统故障时,允许部分数据不可用,但是会保证核心的功能可用,允许数据在一段时间内不一致,但是经过一段时间后,数据最终是一致的
- 基本可用:允许其损失系统的部分可用性,比如响应时间或者功能上的损失,但是保证系统的基本可用
- 软状态:允许系统存在中间状态,中间状态不会影响系统的整体可用性,只是允许系统各个节点之间的数据同步存在延迟
- 最终一致性:指系统中各个节点的数据副本经过一段时间的同步,最终能够达到一致的状态