微服务-Nacos(注册中心)

Nacos

Nacos可以看作注册中心+配置中心,比Eureka更加强大。

注册中心

在父工程中引入SpringCloudAlibaba的版本依赖

xml 复制代码
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.6.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

在服务中引入nacos的依赖

xml 复制代码
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置文件(application.yml)

yml 复制代码
spring:
  application:
    name: orderservice # 服务名称,和Eureka一样
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: SX # 集群名称

配置文件中需要指定服务的名称(这里和Eureka一样),其次需要指定nacos的ip+端口。至于下边的cluster-name是指定当前服务的集群名称。

这就是Nacos的服务分级存储模型,即一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型。微服务互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群。

划分的时候其实是根据机器所处的地理位置来划分,同一个机房之间的服务调用肯定速度更快。

当然默认的负载均衡策略不会想我们想象的那样,Nacos提供了同集群优先的负载均衡策略,只需要修改配置文件(application.yml)中的负载均衡策略:

yml 复制代码
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 

这样在服务调用的时候会遵循同集群优先 ,但是在同集群下的实例是随机 的,而不再是轮询策略。

权重配置

Nacos也提供了权重的配置,可以修改某一个实例的权重而改变被选择的频率。当权重为0的时候就一定不会访问,相当于该实例已经下线。这样我们在做一些版本的升级时就不会影响用户的正常访问。

命名空间NameSpace

Namespace 是 Nacos 提供的一个虚拟隔离区域,用于将不同的服务和配置进行逻辑分组。不同的 Namespace 之间是完全隔离 的,即一个 Namespace 中的服务或配置不会影响到另一个 Namespace 中的内容。举个例子,把服务服务调用者放到默认的public,把服务提供者放到新增的test',然后再去访问。

由此可见,public和test这两个命名空间时完全隔离的。

Group

Group 是用于对同一 Namespace 内 的服务进行进一步分组的单位,可以用于将同一 Namespace 中的服务按业务分类或功能模块进行管理。例如,一个 Namespace 可以包含多个 Group,如 paymentorderinventory

Nacos与Eureka的区别

Nacos和Eureka整体结构类似,服务注册、服务拉取、心跳等待,但是也存在一些差异:

Nacos对不同的服务提供者实例采取的监测机制不一样,而且消费者也不是只能去pull,Nacos也会主动的去push。

  • Nacos与eureka的共同点

    • 都支持服务注册服务拉取
    • 都支持服务提供者心跳方式做健康检测
  • Nacos与Eureka的区别

    • Nacos支持服务端主动检测提供者状态:临时实例 采用心跳模式非临时实例 采用主动检测模式 。并且临时实例 心跳不正常会被剔除非临时实例 则不会被剔除
    • Nacos支持服务列表变更的消息推送模式
    • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
相关推荐
米丘4 小时前
微前端 Micro-App 实践
微服务·前端框架·前端工程化
Devin~Y5 小时前
从Spring Boot到AI Agent:大厂Java微服务面试三轮实战问答解析
java·spring boot·redis·spring cloud·微服务·ai·kafka
牧羊狼的狼6 小时前
基于阿里云落地SpringCloudAlibaba云原生微服务:从部署、CI/CD到性能调优、线上排障全体系实战
阿里云·微服务·云原生
阿里云云原生1 天前
阿里云微服务引擎 MSE 及 API 网关 2026 年 5 月产品动态
微服务
Jempo M1 天前
小品文:服务器并发模型深度详解:事件驱动、多线程、Actor模型全维度对比与工程实践
服务器·微服务
IronMurphy1 天前
微服务拷打最后一讲!!!
java·微服务·架构
qq_382949222 天前
推荐:《Spring Cloud Alibaba 微服务架构实战课》—— 从零到一构建企业级微服务系统
微服务·云原生·架构
JAVA社区2 天前
Java高级全套教程(十一)—— Kubernetes 超详细企业级实战详解
java·运维·微服务·容器·面试·kubernetes
qq_382949222 天前
推荐一门不错的微服务实战课:Spring Cloud Alibaba 从入门到落地
微服务·云原生·架构