微服务-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,如 payment、order、inventory 等

Nacos与Eureka的区别

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

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

  • Nacos与eureka的共同点

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

    • Nacos支持服务端主动检测提供者状态:临时实例 采用心跳模式 ,非临时实例 采用主动检测模式 。并且临时实例 心跳不正常会被剔除 ,非临时实例 则不会被剔除
    • Nacos支持服务列表变更的消息推送模式
    • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
相关推荐
Joy T21 小时前
从 Nginx 到 Gateway 再到微服务:一次 AI 请求的完整链路
nginx·微服务·gateway·controller·路由转发·ai service·接口错误排查
数据狐(Datafox)1 天前
淘宝图片搜索 API 落地实战:基于以图搜货搭建跨境电商选品系统
java·大数据·微服务
自强的小白4 天前
nacos配置中心面试题(导入配置的优先级),注意是如果后导入相同配置是以 后导入优先。外部入优先和nacos的数据隔离。
java·微服务
suaizai_4 天前
Spring Cloud Gateway 全链路 traceId 传递方案
微服务
Wang's Blog4 天前
Java框架 SpringCloud 快速入门: 微服务配置拉取
java·spring cloud·微服务
Wang's Blog4 天前
Java框架 SpringCloud 快速入门: 微服务框架课程介绍与知识地图
java·spring cloud·微服务
写后端的胖头鱼5 天前
【高频面试题】微服务项目排查错误流程(万字详解)
微服务·架构·问题定位·链路·线上排错
晚安code6 天前
RPC 到底是什么:微服务内部调用的首选,以及它藏起来的三个坑
微服务·rpc
晚安code6 天前
微服务架构和单体架构的区别:拆之前你得先想清楚这件事
微服务·架构
code_slave(码畜)7 天前
微服务架构落地:基础服务 —— 报表服务(中篇:元数据、查询引擎、缓存与权限落地)
spring boot·spring cloud·缓存·微服务·架构