CAP理论和应用
一、基本概念
-
C:一致性 -Consistency
在分布式系统中,所有服务节点能统一访问到同一份最新数据备份,拥有同样的值。
-
P:高可用-Availability
当分布式系统中的某一部分节点服务异常时,集群服务的整体可用性要求,保证每次请求都能获取到非错的响应、但是不保证获取的数据为最新数据。
-
A:分区容错性-Partition tolerance
由于分布式系统存在不同的网络区间,即多个子网络,这些相对独立的网络区间叫网络分区,分区容错性是指在分布式系统中,网络分区的区间通信可能出现失败,这种情况下,为了整体服务正常,通常面临在数据一致性和高可用性的抉择。
二、CAP、CP、AP和AC
-
CAP【
CAP原则又称CAP定理,指的是在一个分布式系统中的数据一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance),但是CAP 原则指示3个要素最多只能同时实现两点,不可能三者兼顾,由于网络硬件肯定会出现延迟丢包等问题,但是在分布式系统中,我们必须保证部分网络通信问题不会导致整个服务器集群瘫痪,另外即使分成了多个区,当网络故障消除的时候,我们依然可以保证数据一致性,所以我们必须保证分区容错性;
-
CP【一致性、分区容错性】
不遵循可用性A原则,当网络分区出现后,为了保证数据一致性,就必须拒绝请求,否则无法保证一致性。
-
AP【高可用、分区容错性】
不遵循一致性C原则,只满足可用性和分区容错,即AP当网络分区出现后,为了保证可用性,系统可以返回旧值,保证系统的可用性。
-
AC
不保证分区容错性,仅仅考虑一致性和高可用性,这种情况在分布式系统中对于服务是毁灭性的,失去了分区容错性,整体节点网络将会混乱不可控,网络分区也就失去了意义,因此AC在具体应用中不考虑。
三、常用服务组件中CAP的应用总结
服务 | 是否支持CP | 是否支持AP |
---|---|---|
Zookeeper | 是 | 否 |
Consul | 是 | 否 |
Eureka | 否 | 是 |
Nacos | 是 | 是 |