服务注册中心对比
服务注册与发现框架 | 公司 | CAP | 控制台 | 社区活跃 |
Eureka | Netflix | AP | 支持 | 低(2.x闭源) |
Zookeeper | Apache | CP | 不支持 | 中 |
Consul | CP | 支持 | 高 | |
Nacos | Alibaba | AP/CP | 支持 | 高 |
Nacos CP和AP 动态切换
市面上大多都是以单一的实现形式为主,例如:Zookeeper使用的是 CP、而 Eureka采用的是AP,在Nacos中提供了两种模式的动态切换。
-
一般来说,如果不需要服务侧存储信息且服务实例通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。如Spring Cloud 和 Dubbo,都适用于AP模式,AP模式为了服务的可用性减弱了一致性,因此AP模式下只支持注册临时实例。
-
如果需要在服务侧编辑或者储存配置信息,那么CP是必须的,K8S服务和DNS服务则是用于CP模式。CP模式下则支持注册持久化实例,此时则是以Raft协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。
-
切换命令(默认是AP)
curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'
-
注意:临时和持久化的区别主要在健康检查失败后的表现,持久化实例健康检查失败后会被标记成不健康,而临时实例会直接从列表中被删除。