简述CAP与BASE

CAP

Consistency 一致性、Availability 可用性、Partition tolerance 分区容错性。

分区容错性P是前提。分区是指集群中出现互相不可访问的区域,分区容错性是指当出现分区时,系统整体依然可以提供服务,至少不是全部停止服务。 当出现分区时,C一致性和A可用性存在矛盾,选择越高的一致性,则必然导致可用性的降低,反之亦然。

极端的CP系统,当分区出现时,接收数据更新请求的服务器无法将新数据同步到另一分区的服务器,此分区的服务器要么等待数据同步,全部停止提供服务。要么取消写入新数据,写服务不可用。

极端的AP系统,当分区出现时,接收数据更新请求的服务器先把自己的数据更新,然后继续提供服务,不等待其它任何服务器的数据同步。同一分区的其它服务器也许在稍候同步最新数据,有短暂时间的数据不一致。另一分区的服务器无法同步新数据,也继续提供服务,出现严重的数据不一致。

最终一致性:一致性最低等级,极端AP系统属于最终一致性。 弱一致性:接收数据更新请求的服务器需要等待集群中至少有另外一个节点同步成功的反馈,才继续提供服务。 平衡:接收数据更新请求的服务器需要等待集群中过半数量节点同步成功的反馈,才继续提供服务。Zookeeper和MongoDB使用此策略。可以保证出现分区时,只有一个分区能有过半数量节点同步成功而更新成功。 强一致性:一致性最高等级,极端CP系统属于强一致性。

BASE

Basically Available 基本可用、Soft state 软状态、Eventually consistent 最终一致性

集群系统依据CAP理论平衡出来的结果