Nacos使用指南

Nacos使用指南

1.认识Nacos

Nacos是SpringCloudAlibaba的一个组件,遵循SpringCloud规范

2.Nacos的优势

1.支持服务端主动检测服务提供者状态。临时实例采用心跳检测,非临时实例采用主动检测

2.Nacos支持服务列表变更消息推送,消息更加及时

3.拥有服务分级存储、权重配置、环境隔离等友好配置,优化了服务提供和获取的各种方式

3.Nacos使用快速入门

3.1 安装Nacos

3.1.1 Windows安装

3.1.1.1 下载安装包

在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:

GitHub主页:https://github.com/alibaba/nacos

GitHub的Release下载页:https://github.com/alibaba/nacos/releases

windows版本使用nacos-server-xxx.zip包即可。

3.1.1.2 解压

将这个包解压到任意非中文目录下,如图:
Nacos使用指南_第1张图片

目录说明:

  • bin:启动脚本
  • conf:配置文件
3.1.1.3 端口配置

Nacos的默认端口是8848,如果你电脑上的其它进程占用了8848端口,请先尝试关闭该进程。

如果无法关闭占用8848端口的进程,也可以进入nacos的conf目录,修改配置文件中的端口:

Nacos使用指南_第2张图片

修改其中的内容:

Nacos使用指南_第3张图片

3.1.1.1.4 启动

启动非常简单,进入bin目录,结构如下:

Nacos使用指南_第4张图片

然后执行命令即可:

  • windows命令:

    startup.cmd -m standalone
    

执行后的效果如图:
Nacos使用指南_第5张图片

3.1.1.5 访问

在浏览器输入地址:http://127.0.0.1:8848/nacos即可:默认的账号和密码都是nacos:

Nacos使用指南_第6张图片

3.1.2 Linux安装

Linux或者Mac安装方式与Windows类似。

3.1.2.1 安装JDK

Nacos依赖于JDK运行,所以Linux上也需要安装JDK才行。

下载jdk安装包:

Nacos使用指南_第7张图片

然后解压缩:

tar -xvf jdk-8u144-linux-x64.tar.gz

然后重命名为java

配置环境变量:

export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin

设置环境变量:

source /etc/profile
3.1.2.2 下载安装包

Linux版本使用nacos-server-xxx.tar.gz包即可。nacos-server-1.4.1.tar.gz

3.1.2.3 解压

命令解压缩安装包:

tar -xvf nacos-server-1.4.1.tar.gz

然后删除安装包:

rm -rf nacos-server-1.4.1.tar.gz
3.1.2.4 端口配置

与windows中类似

3.1.2.5 启动

在nacos/bin目录中,输入命令启动Nacos:

sh startup.sh -m standalone

3.2 Nacos注册与发现

3.2.1 服务注册到Nacos

3.2.1.1 引入依赖

在需要注册到Nacos的服务的pom.xml文件中引入Nacos的客户端依赖

<dependency>
    <groupId>com.alibaba.cloudgroupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
3.2.1.2 修改配置文件

在需要注册到Nacos的服务的配置文件中添加Nacos地址,默认端口是8848

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
3.2.1.3 启动服务

找到需要注册到Nacos的服务的启动类,进行启动,启动成功后,登录到Nacos控制台,可以看到出现新的服务
Nacos使用指南_第8张图片

启动后查看nacos控制台

Nacos使用指南_第9张图片

3.2.2 服务分级模型

Nacos采用服务、集群、实例的分级模型,一个服务下可以有多个集群,一个集群下可以有多个实例。例如:一个orderService服务有三个不同实例:实例1、实例2、实例2,三个不同实例分布在不同的机房,一个机房中的实例就称为一个集群。微服务互相访问时,应该优先同一集群实例进行访问,当同一集群的实例不可访问时,才去访问其它集群的实例

3.2.2.1 给服务配置集群

修改服务的application.yml,添加 cluster-name

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: BJ # 集群名称

Nacos使用指南_第10张图片

查看nacos控制台服务详情,可以看到出现集群信息

Nacos使用指南_第11张图片

3.2.2.2 同集群优先访问策略设定

默认的ZoneAvoidanceRule并不能实现根据同集群优先来实现负载均衡,Nacos提供了一个NacosRule的实现,可以优先从同集群中挑选实例

  1. 给服务配置集群信息

    spring:
      cloud:
        nacos:
          server-addr: localhost:8848
          discovery:
            cluster-name: BJ # 集群名称
    
  2. 在服务的application.yml修改负载均衡的规则

    例如给:orderService进行配置

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

3.2.3 权重配置

实际使用场景中,不同的机器设备的性能也不同,最理想的场景是性能好的机器多承担一些请求,性能差的机器少承担一些请求,但是默认情况NacosRule是在集群内随机挑选,不会考虑机器性能情况。因此Nacos提供了控制台修改权重配置,权重越大,访问频率越高

在Nacos控制台,找到服务实例列表,点击编辑即可修改权重
Nacos使用指南_第12张图片

注意:如果权重修改为0,则该实例永远不会被访问,可以用于服务升级和维护

3.2.4 环境隔离

Nacos提供了namespace来实现环境隔离功能,nacos中可以有多个namespace,每个namespace下有多个group和service,不同的namespace的服务之间是不可见的。Nacos中默认所有group和service都在一个namespace下,名称为public

3.2.4.1 namespace创建
  1. 在Nacos控制台点击页面新增按钮,添加一个namespace:

    Nacos使用指南_第13张图片

  2. 填写表单,填写空间名和描述,点击确定,生成新的命名空间

    Nacos使用指南_第14张图片
    Nacos使用指南_第15张图片

3.2.4.2 配置文件配置namespace
spring:
  application:
    name: userservice
  cloud:
    nacos:
      server-addr: 192.168.1.109:8848
      discovery:
        cluster-name: BJ
        namespace: 348c7a78-0b69-43ff-9987-9fc4cafec67c #命名空间ID,创建命名空间时自动生成,复制即可

Nacos使用指南_第16张图片

Nacos使用指南_第17张图片

3.3 Nacos配置管理

Nacos除了用做注册中心以外,它的另一大功能是配置管理,当微服务的数理越来越多时,微服务的配置文件难以进行管理,Nacos提供了配置管理,当配置文件变动时,及时通知对应的微服务,实现热更新

3.3.1 配置管理

3.3.1.1 Nacos添加配置文件

在Nacos控制台左侧找到“配置管理”下的“配置列表”选项,点击右侧“+“,填写配置表单

Nacos使用指南_第18张图片

Nacos使用指南_第19张图片

Nacos使用指南_第20张图片

3.3.1.2 拉取配置文件

微服务要拉取Nacos里的配置,而且需要和本地配置文件application.yml中内容合并,才能完成项目启动

但是会有个问题,如果不先读取本地的application.yml文件,怎么会知道Nacos的地址?为了解决此问题,Spring引入了一种新的配置文件bootstrap.yaml,它会在application.yml文件被读取之前进行读取
Nacos使用指南_第21张图片

3.3.1.2.1 引入nacos-config依赖

在微服务中引入nacos-config依赖和nacos-discovery依赖

 
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
        dependency>
 
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>
3.3.1.2.2 添加bootstrap.yaml文件

在userservice微服务中新建bootstrap.yaml文件,并添加Nacos相关配置内容

Nacos使用指南_第22张图片

spring:
  application:
    name: userservice # 服务名称
  profiles:
    active: pro # 环境名称
  cloud:
    nacos:
      server-addr: 123.57.241.172:8848 #Nacos地址
      config:
        file-extension: yaml # 文件后缀名

会根据server-addr的值来获取Nacos地址,然后通过服务名称-环境名称-文件后缀名来获取配置文件,也就是上述配置文件中的:userservice-pro.yaml

3.3.1.2.3 读取nacos的配置文件

可以在Nacos中添加配置文件,并使用java代码进行读取配置

:一般项目的核心配置或者需要热更新的配置可以放到Nacos管理的配置文件中,一般变动不太大或者属于微服务特有的配置还是放在微服务本地的配置文件中

3.3.2 配置热更新

在Nacos进行配置文件修改后,最理想的状态就是微服务不需要重启就能立即生效,也就是平常所说的配置热更新。Java中实现配置热更新,有两种方式

3.3.2.1 添加注解@RefreshScope
3.3.2.1.1 在nacos中新建配置

Nacos使用指南_第23张图片

3.3.2.1.2 在@Value注入变量的类上添加注解@RefreshScope

Nacos使用指南_第24张图片
Nacos使用指南_第25张图片

3.3.2.2 使用@ConfigurationProperties注解

使用@ConfigurationProperties代替@Value注解

3.3.2.2.1 定义一个配置类,在类上加注解@ConfigurationProperties

Nacos使用指南_第26张图片

3.3.2.2.2 注入配置类的bean到使用的地方,获取所要配置信息

Nacos使用指南_第27张图片

3.3.3 配置共享

微服务启动时会去Nacos中读取多个配置文件,一般有两种格式:

  • 服务名称-环境名称-文件后缀名,例如:userservice-pro.yaml
  • 服务名称-文件后缀名,例如:userservice.yaml

服务名称-文件后缀名不包含环境,因此可以被多个环境共享。当Nacos和本地出现相同属性配置时,有优先级之分:服务名称-环境名称-文件后缀名>服务名称-文件后缀名>本地配置

你可能感兴趣的:(spring,boot,spring,java,spring,cloud)