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

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。

CP和AP
CAP原则:cap理论是针对分布式数据库而言的,它是指在一个分布式系统中,一致性(Consistency,C)、可用性(Availability,A)、分区容错性(Partition Tolerance, P)三者不可兼得。

nacos支持AP(可用性 | 分区容错性) 和 CP(一致性 | 分区容错性)两种 默认是AP

如果注册Nacos的client节点注册时ephemeral=true,那么Nacos集群对这个client节点的效果就是AP,采用distro协议实现;而注册Nacos的client节点注册时ephemeral=false,那么Nacos集群对这个节点的效果就是CP的,采用raft协议实现。根据client注册时的属性,AP,CP同时混合存在,只是对不同的client节点效果不同。Nacos可以很好的解决不同场景的业务需求。

  #false为永久实例,true表示临时实例开启,注册为临时实例,默认是true
 spring.cloud.nacos.discovery.ephemeral=true

 

posted @ 2023-07-14 12:26  人在代码在  阅读(187)  评论(0)    收藏  举报