微服务-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方式
相关推荐
fanly1121 小时前
Surging AI Agent 完整产品介绍
微服务·microservice
蝎子莱莱爱打怪7 天前
XZLL-IM干货系列 04|Netty 长连接实战:Pipeline 怎么排、心跳怎么跳、连接怎么管
后端·微服务·面试
SamDeepThinking8 天前
Java微服务练习方式
java·后端·微服务
米丘11 天前
微前端之 Web Components 完全指南
微服务·html
霸道流氓气质14 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
霸道流氓气质14 天前
Spring Boot 微服务性能优化完全指南
spring boot·微服务·性能优化
地瓜伯伯14 天前
从MESI缓存一致性协议讲透synchronized的底层
java·spring boot·spring·spring cloud·微服务·springcloud
Devin~Y14 天前
大厂 Java 面试实录:从音视频内容社区到 AI RAG 的全链路技术设计
java·spring boot·redis·spring cloud·微服务·kafka·音视频
递归尽头是星辰15 天前
AI 访问数据仓库:从直连到微服务化
数据仓库·人工智能·微服务·dataagent·ai数据治理
就改了15 天前
Windows 环境 SkyWalking 完整实操教程
windows·微服务·skywalking