十一. SpringCloud Alibaba (3)

Nacos与其他服务注册中心特性的对比:

Nacos Eureka Consul CoreDNS Zookeeper
一致性协议   CP/AP   AP   CP   /   CP  
健康检查   TCP/HTTP/MySQL/Client Beat(客户端心跳)   Clent Beat   TCP/HTTP/gRPC/cmd   /   Client Beat  
负载均衡   权重/DSL/元数据/CMDB   Ribbon   Fabio   RR   /  
雪崩保护   支持   支持   不支持   不支持   不支持  
自动注销实例   支持   支持   不支持   不支持   支持  
访问协议   HTTP/DNS/UDP   HTTP   HTTP/DNS   DNS   TCP  
监听支持   支持   支持   支持   不支持   不支持  
多数据中心   支持   支持   支持   不支持   不支持  
跨注册中心   支持   不支持   支持   不支持   不支持  
SpringCloud集成   支持   支持   支持   不支持   不支持  
Dubbo集成   支持   不支持   不支持   不支持   支持  
K8s集成   支持   不支持   支持   支持   不支持  

从理论知识中我们知道Nacos服务注册中心可以在AP和CP模式中进行切换,C是所有节点在同一时间看到的数据是一致的,而A是所有的请求都会受到响应(A可以近似理解为高可用)。

一般来说,如果不需要存储服务级别的信息且服务实例是通过Nacos-Client注册的,并且服务能保持心跳上报,那么就可以选择AP模式,当前主流的微服务框架如SpringCloud和Dubbo,都适用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此 AP模式下只支持注册临时实例

而如果需要在服务级别编辑或存储配置信息,那么CP是必须的,K8s服务和DNS服务使用于CP模式,CP模式下则支持注册持久化实例,此时以Raft协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。

如果需要让Nacos服务从AP模式切换到CP模式的话,只需要向服务注册中心发送POST请求即可:

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP' 3. Nacos作为服务配置中心

在用SpringCloud Config结合SpringCloud Bus时,我们可以把配置信息托管到远端如GitHub上,而现在我们应用了Nacos后,可以直接在Nacos上托管配置信息。

3.1 基础配置

新建Module:cloudalibaba-config-nacos-client3377作为服务配置中心微服务,在其POM文件中引入必要的依赖(如Nachos服务注册中心的依赖)为,引入配置中心的依赖:

<!--nacos-config--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!--SpringCloud ailibaba nacos --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpszdz.html