概述
一致性协议 | 健康检查 | 雪崩保护 | 访问协议 | SpringCloud集成 |
---|---|---|---|---|
Nacos | CP+AP | TCP+HTTP+Mysql+ClientBeat | 有 | Http、DNS |
Eureka | AP | 心跳 | 有 | http |
Consul | TCP、HTTP、gRPC、Cmd | 无 | http、dns | 支持 |
Zookeeper | CP | Keep Alive | 无 | TCP |
Zookeeper
CP,保证一致性,集群搭建的时候某个节点失效,会进行选举Leader,或者半数以上节点不可用则无法提供服务,因此可用性无法满足。ZK的一致性是最终一致性,而不是强一致性。
Eureka
AP,无主从节点,一个节点挂了,自动切换到其他节点,去中心化设计。
Nacos
Nacos同时支持AP和CP,通过配置来切换具体是使用哪种模式,
curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'
这两种模式底层采用的分布式数据存储策略是不同的,因此可以同时支持。
- AP是EphemeralConsistencyService对应的是DistroConsistencyServiceImpl,采用的协议是阿里自研的Distro,就像gossip协议;
- CP是PersistentConsistencyService对应的是RaftConsistencyServiceImpl,其底层采用的是Raft协议
这两种一致性策略下的数据存储互不影响,所以nacos实现了AP模式与CP模式在一个组件中同时存在。
https://www.liaochuntao.cn/2019/06/01/java-web-41/