Nacos注册中心
服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。
1、CAP理论
CAP理论是分布式架构中的重要理论。
- C:一致性(Consistency) (所有节点在同一时间具有相同的数据)
- A:可用性(Availability) (保证每个请求不管成功或者失败都有响应)
- P:分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)
2、主流注册中心对比
Nacos | Eureka | Consul | CoreDNS | Zookeeper | |
---|---|---|---|---|---|
一致性协议 | CP+AP | AP | CP | — | CP |
健康检查 | TCP/HTTP/MYSQL/Client Beat | Client Beat | TCP/HTTP/gRPC/Cmd | — | Keep Alive |
负载均衡策略 | 权重/metadata/Selector | Ribbon | Fabio | RoundRobin | — |
雪崩保护 | 有 | 有 | 无 | 无 | 无 |
自动注销实例 | 支持 | 支持 | 不支持 | 不支持 | 支持 |
访问协议 | HTTP/DNS | HTTP | HTTP/DNS | DNS | TCP |
监听支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
多数据中心 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
跨注册中心同步 | 支持 | 不支持 | 支持 | 不支持 | 不支持 |
SpringCloud集成 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
Dubbo集成 | 支持 | 不支持 | 不支持 | 不支持 | 支持 |
K8S集成 | 支持 | 不支持 | 支持 | 支持 | 不支持 |
Nacos除了服务的注册发现之外,还支持动态配置服务。
一句话概括就是Nacos = Spring Cloud注册中心 + Spring Cloud配置中心。
3、集成到SpringCloud中
创建好SC父工程,添加子模块
1)添加pom
|
|
2)主启动类添加注解
|
|
3)添加application.yml配置文件
|
|
如果不想使用 Nacos 作为您的服务注册与发现,可以将spring.cloud.nacos.discovery
设置为 false
4)启动项目
以nacos/nacos,登录到127.0.0.1:8848/nacos,可以看到user服务已经注册成功:
5)服务的 EndPoint
spring-cloud-starter-alibaba-nacos-discovery 在实现的时候提供了一个EndPoint
,EndPoint
的访问地址为 http://ip:port/actuator/nacos-discovery。 EndPoint 的信息主要提供了两类:
1、subscribe: 显示了当前有哪些服务订阅者
2、NacosDiscoveryProperties: 显示了当前服务实例关于 Nacos 的基础配置
至此,Spring Cloud使用Nacos作为注册中心已经初步完成,其他配置根据自身业务修改即可。