注册中心的可用性和一致性,分区容错性。CAP理论

发布时间 2023-07-14 12:33:38作者: 人在代码在

https://juejin.cn/post/6961201114343538724

CAP理论

什么是CAP?

  1. C代表Consistency(一致性)一致性是指所有服务节点在同一时刻的数据是完全一致的
  2. A代表Availability(可用性)可用性是指所有的请求都必须得到响应
  3. P代表Partition tolerance(分区容错性)分区容错性是指分布式系统的某个服务节点网络分区故障的时候,仍然能够对外提供满足服务

在任何分布式系统中,都不能同时满足CAP,而分区容错性时必须要保证的,所以C、A只能二选一

CA:单点集群,满足一致性和可用性,但是在可扩展性上不是很强大。 CP(Zookeeper/consul):满足一致性,分区容忍性的系统,通常性能不是特别高。 AP(Eureka):满足一致性,分区容忍必的系统,通常性能不是特别高。

CAP理论关注粒度是数据,而不是系统的整体设计策略

为什么C和A不能同时满足?

如果要保证一致性的话,那么某个服务节点对某条数据进行写操作时,其他数据是锁定读写的,只有等写操作完成后,完成了数据同步,才能放开,在这个锁定的期间,该数据对于其他服务节点是不可用的,所以无法保证该数据的可用性

反之,如果要保证可用性的话,那么在一个节点进行写操作的时候,其他节点就不能锁定,可能此时一个其他节点在请求获取该条数据,所以可能其他节点读取到的是旧数据,就无法保证一致性

  1. Zookeeper能够保证CP
  2. Eureka能够保证AP
  3. Nacos支持CP和AP模式切换

各个服务注册中心对比

Spring Cloud支持的注册中心有zookeeper、Eureka、Nacos、Consul。