CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾

分布式系统的基石——CAP理论_数据一致性


一致性 ( C ) :在分布式系统中的所有数据备份,在同一时刻是否同样的值。(所有 节点在同一时间的数据完全一致, 越多节点,数据同步越耗时)

下面我们用下单的例子来演示数据一致性。假设某个用户下单,这时候在主库中新增一条。那么记录会实时同步到两个从库中去。所谓一致性,就是用户在下单的时候将数据写入主库。那么在从库中读出来的数据要一模一样。如果由于网络延迟,导致数据没有从主库同步到从库,那么就会导致一致性无法满足。

分布式系统的基石——CAP理论_数据_02

 图1 订单数据库数据一致性


可用性(A) :负载过大后,集群整体是否还能响应客户端的读写请求。(服务一直可用,而且是正常响应时间)

某订单服务部署了两个节点,正常情况下,QPS为10ms。由于某次促销活动导致流量剧增,QPS变为100ms,比之前整整翻了10倍。但是系统还是正常工作的,所以还是可用的。我们知道HTTP请求有超时时间,如果在规定的超时时间系统还是没有正常响应,那么我们就说服务不可用了。

分布式系统的基石——CAP理论_数据一致性_03


分区容错性:指在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。就好比是订单服务1出现故障,订单服务2还正常工作,依然可以很好地对外提供服务。

分布式系统的基石——CAP理论_数据一致性_04


CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容错性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡。更多内容,参考[CAP--什么是CAP,为何三者不可兼得]

分布式系统的基石——CAP理论_数据一致性_05