Nacos服务管理

注:基于SpringBoot项目

 

一、服务注册

1. 依赖引入

# 首先父工程中引入 SpringCloudAlibaba 版本管理依赖,其中会包含 nacos 的版本

<!-- SpringCloudAlibaba -->
<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-discovery ,类似于 eureka-client,注意,两者不要同时引入

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

 

2. nacos 地址配置:application.yml

spring:
  cloud:
    nacos:
      server-addr: localhost:8848

 

3. nacos 的服务调用和负载均衡配置与 eureka 一致

参考:https://www.cnblogs.com/zhousjcn/p/15511161.html

 

二、Nacos服务分级模型

1. 如何设置实例的集群属性

  修改application.yml文件,添加spring.cloud.nacos.discovery.cluster-name属性即可

spring:
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos 服务地址
      discovery:
        cluster-name: HZ # 配置集群名称,也就是机房位置,例如:HZ,杭州

 

2. Nacos服务分级存储模型

  一级是服务,例如 userservice、orderService等等

  二级是集群,例如 杭州 或 上海

  三级是实例,例如杭州机房的某台部署了userservice的服务器

 

 

三、本地集群调用

  本地集群调用,即杭州(HZ)的服务,在调用其他服务时,优先调用本地(杭州-HZ)服务,在本地的服务列表中随机选择服务调用,其次才是调用其他集群的服务。

  步骤:

  1. 在配置集群时,名称相同,例如有 orderService和userService同时配置为 HZ

  2. 修改负载均衡规则为 nacosRole

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则

  3. 跨集群调用服务会有警告信息打印

 

 

四、权重配置

说明:

  • 权重值一般在 0 ~ 1 之间,包含 0 和 1
  • 权重越小,服务被访问的概率越低,当服务权重设置为 0 时,该服务将不被访问
  • 服务权重配置最基本的用法是调整某些服务被访问的概率,例如降低运行在服务器性能比较低的服务访问概率等
  • 服务权重配置可以应用在服务升级、发版时,首先将服务权重设置为 0 ,新服务启动成功后逐渐条高权重,使得访问量逐渐提高,这样加入新服务存在问题,那么影响范围也比较小

1. 打开某个服务的服务列表,点击需要修改权重服务的编辑按钮

 

2. 在权重条码直接修改权重值即可

 

五、环境隔离

  处于不同命名空间的服务之间无法访问。

1. 命名空间配置

点击确认后,创建的命名空间会出现在列表中,其中 命名空间ID 会在服务配置中使用到

 

2. 服务中配置指定命名空间

spring:
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos 服务地址
      discovery:
        cluster-name: HZ # 配置集群名称,也就是机房位置,例如:HZ,杭州
        namespace: 13ad45bc-1fa3-4702-b7b8-9310aedaf8bd # 这里配置命名空间的ID

 

六、配置非临时实例

1. 临时实例和非临时实例的区别

  • 与Eureka差别在于服务提供者,Nacos会将服务提供者划分为临时实例和非临时实例
  • 临时实例心跳有服务提供者发出,每30秒一次,一旦心跳停止,Nacos会直接从服务列表剔除
  • 非临时实例不会主动发起心跳,由服务注册中心Nacos发起询问,频率高于临时实例,且询问得不到回复时,并不会将服务提供者从服务列表剔除

 

 

2. 配置方式

spring:
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos 服务地址
      discovery:
        cluster-name: HZ # 配置集群名称,也就是机房位置,例如:HZ,杭州
        namespace: 13ad45bc-1fa3-4702-b7b8-9310aedaf8bd # 这里配置命名空间的ID
        ephemeral: false # 设置为非临时实例,默认为 true,表示服务为临时实力注册到服务注册中心

 

posted @ 2021-11-04 23:11    阅读(532)  评论(0编辑  收藏  举报