基于CAP定理的数据一致性
一 数据一致性简介
1 产生数据一致性的原因
分布式系统中,存在多个服务节点,每份数据都有多份副本,每份副本对应一个服务节点
如果网络、服务器或者软件出现故障,会导致部分节点写入成功,部分节点写入失败,最终导致各个节点之间的数据不一致
2 数据一致性的定义和分类
数据一致性是指任一时刻,所有副本中的数据都保持一致
强一致性:更新操作完成之后,任何时刻,所有副本中的数据都是更新后的数据。强一致性是程度最高一致性要求,也是最难实现的,目前无法实现
弱一致性:更新操作完成之后,副本中的数据可能是更新前的,也可能是更新后的
最终一致性:一种特殊的弱一致性,在一定时间后,所有副本中的数据都是更新后的。这也是大型分布式系统构建使用最多的一种数据一致性方案
二 CAP定理
CAP定理(CAP theorem)又称布鲁尔定理(Brewer's theorem),CAP原则
指的是在一个分布式系统中,只能满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)中的两项,不可能同时满足
一致性(Consistency):分布式系统中的所有节点,在同一时刻具有完全相同的数据。当一个操作新增/修改数据,之后的任何操作都必须返回该操作新增/修改后的数据
可用性(Availability):分布式系统中一部分节点故障后,系统能在正常响应时间内响应客户端的请求。即使部分节点故障后,系统仍然可用
分区容错性(Partition tolerance):分布式系统中任意节点数据的丢失或失败都不会影响整个系统的继续运作。即使节点数据不一致,系统还能正常运行
三 CAP定理分类
根据CAP定理可以分为满足CA原则、满足CP原则和满足AP原则三类:
CA原则:满足一致性,可用性的系统, 不满足分区容错性,集群退化为单实例,满足CA原则的系统可扩展性弱
CP原则:满足一致性,分区容错性的系统,不满足可用性,满足CP原则的系统可用性低(系统基本可用),可能在某一时刻服务不可用,导致请求得不到回应
AP原则:满足可用性,分区容错性的系统,不满足一致性,满足AP原则的系统数据一致性低,可能导致请求的结果不对或多次请求得到的结果不一致
一般的分布式系统在CP原则、AP原则两类中选择