服务注册与发现框架 CAP 模型 控制台管理 社区活跃度
Eureka AP 支持 低(2.x版本闭源)
Zookeeper CP 不支持 中
Consul CP 支持 高
Nacos AP/CP 支持 高
一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)
Nacos 厉害就在于它是可选择AP或者CP的模式
Nacos实例 可以选择临时实例 和持久化实例
临时实例: 客户端上报健康状态,摘除不健康实例,非持久化 AP Eureka
持久化实例:服务端探测健康状态,保留不健康实例,持久化 CP Consul
C 是所有节点在同一时间看到的数据是一致的;而A 的定义是所有的请求都会收到响应。
何时选择何种模式?
一般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如 Spring cloud 和Dubbo 服务,都适用于AP模式,AP模式为了服务的可用性而减弱了一致性,因此AP模式下只支持注册临时实例。
如果需要在服务器级别编辑或者存储配置信息,那么CP是必须,K8S和DNS服务则适用于CP模式。
CP模式下则支持注册持久化实例,此时则是以Raft协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。
curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'