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 解压

将这个包解压到任意非中文目录下,如图:
在这里插入图片描述

目录说明:

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

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

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

在这里插入图片描述

修改其中的内容:

在这里插入图片描述

3.1.1.1.4 启动

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

在这里插入图片描述

然后执行命令即可:

  • windows命令:

    startup.cmd -m standalone
    

执行后的效果如图:
在这里插入图片描述

3.1.1.5 访问

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

在这里插入图片描述

3.1.2 Linux安装

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

3.1.2.1 安装JDK

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

下载jdk安装包:

在这里插入图片描述

然后解压缩:

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.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3.2.1.2 修改配置文件

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

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

找到需要注册到Nacos的服务的启动类,进行启动,启动成功后,登录到Nacos控制台,可以看到出现新的服务
在这里插入图片描述

启动后查看nacos控制台

在这里插入图片描述

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控制台服务详情,可以看到出现集群信息

在这里插入图片描述

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控制台,找到服务实例列表,点击编辑即可修改权重
在这里插入图片描述

注意:如果权重修改为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:

    在这里插入图片描述

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

    在这里插入图片描述
    在这里插入图片描述

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,创建命名空间时自动生成,复制即可

在这里插入图片描述

在这里插入图片描述

3.3 Nacos配置管理

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

3.3.1 配置管理

3.3.1.1 Nacos添加配置文件

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.3.1.2 拉取配置文件

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

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

3.3.1.2.1 引入nacos-config依赖

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

 <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
 <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
3.3.1.2.2 添加bootstrap.yaml文件

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

在这里插入图片描述

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中新建配置

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

3.3.2.2 使用@ConfigurationProperties注解

使用@ConfigurationProperties代替@Value注解

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

在这里插入图片描述

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

1110105630882.png&pos_id=img-MRTooIbr-1699586993842)

3.3.3 配置共享

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

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

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

<think>好的,我现在需要处理用户关于Nacos使用指南问题,包括配置管理、服务注册与发现等方面。首先,我需要回忆Nacos的基本概念和核心功能,确保信息准确。Nacos是阿里巴巴开源的动态服务发现、配置管理和服务管理平台,常用于微服务架构中。 用户提到了配置管理和分布式系统,以及服务注册与发现,这些是Nacos的核心功能。我需要分步骤回答,结构清晰。可能包括安装配置、配置管理、服务注册与发现的最佳实践,以及常见问题。 首先,安装部分需要说明如何下载和启动Nacos。根据引用[2],用户可能是在Linux环境下安装,所以需要提到启动命令和成功日志的确认。同时,单机模式启动命令是startup.sh -m standalone,这点要强调,避免用户忘记参数导致集群模式错误。 接下来是配置管理,需要解释如何通过控制台添加配置,包括Data ID、Group和配置格式的选择。这里可以举一个例子,比如设置nacos-config的配置内容,并说明如何在应用中读取,引用[2]中的例子说明配置读取成功。 服务注册与发现部分,需要说明如何集成Nacos客户端,注册服务实例,并通过DiscoveryClient获取服务列表。可能需要提到Spring Cloud Alibaba的依赖,以及@EnableDiscoveryClient注解的使用,这些是常见的实践。 最佳实践方面,要强调配置分离、命名空间和分组的使用,以及健康检查机制。这些能帮助用户构建稳定的微服务系统。同时,结合引用[1],Sentinel与Nacos的集成可以增强稳定性,这一点可以作为补充建议。 最后,常见问题部分需要涵盖启动失败、配置不生效和注册失败的情况,给出检查端口、配置是否正确以及依赖是否添加的解决方案。 生成的相关问题需要围绕用户可能进一步想了解的内容,比如安装步骤、配置管理最佳实践、与Eureka的区别等,确保覆盖用户潜在的需求。 需要确保所有LaTeX格式正确,行内公式用$...$,独立公式用$$...$$。但当前内容中可能涉及的技术术语不需要数学公式,但如果有参数或代码示例,需要正确使用代码块。例如,在配置Data ID时,格式如${spring.application.name}.yaml可能需要用行内代码标记。 检查引用是否正确,用户提供的引用[1]和[2]需要自然地融入到回答中,比如在配置管理部分提到成功读取配置时引用[2],在最佳实践中提到Sentinel集成引用[1]。 最后,确保使用中文,语言流畅,结构清晰,分点说明,便于用户理解。</think>### Nacos 使用指南:配置管理与服务注册与发现 Nacos 是阿里巴巴开源的服务发现、配置管理和服务管理平台,支持动态配置更新、服务健康监测及流量管理,适用于构建云原生微服务架构。以下是核心功能的使用指南: --- #### 一、安装与配置 1. **下载与启动** 从[Nacos官网](https://nacos.io/)下载最新版本,解压后通过以下命令启动(单机模式): ```bash sh startup.sh -m standalone ``` 成功启动后,日志会输出`Nacos started successfully in standalone mode`[^2]。 2. **访问控制台** 默认访问地址为 `http://localhost:8848/nacos`,账号/密码为 `nacos/nacos`。 --- #### 二、配置管理 1. **添加配置** 在控制台选择 **配置管理 → 配置列表 → 新建配置**,填写以下参数: - **Data ID**:格式为 `${spring.application.name}.${file-extension}`(如 `user-service.yaml`) - **Group**:默认 `DEFAULT_GROUP`,可按业务分组 - **配置格式**:支持 YAML、Properties 等 示例配置内容: ```yaml server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/db ``` 2. **读取配置** 在 Spring Boot 应用中添加依赖: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> ``` 通过 `@Value` 注解注入配置值,例如: ```java @Value("${spring.datasource.url}") private String dbUrl; ``` 成功读取后,日志会输出配置信息(如 `nacos-config`)[^2]。 --- #### 三、服务注册与发现 1. **注册服务** 添加依赖并启用服务发现: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> ``` 在启动类添加注解: ```java @EnableDiscoveryClient public class Application { ... } ``` 2. **发现服务** 通过 `DiscoveryClient` 获取服务实例列表: ```java @Autowired private DiscoveryClient discoveryClient; public List<ServiceInstance> getInstances(String serviceId) { return discoveryClient.getInstances(serviceId); } ``` --- #### 四、最佳实践 1. **配置分离** 将环境相关配置(如数据库连接)与业务配置分离,通过 `spring.profiles.active` 指定环境。 2. **命名空间与分组** - **命名空间**:隔离不同环境(如 dev/test/prod) - **分组**:区分同一环境下的不同应用集群 3. **健康检查** Nacos 通过心跳机制监控服务状态,自动剔除不可用实例,保障服务可靠性[^1]。 --- #### 五、常见问题 1. **启动失败** 检查端口 `8848` 是否被占用,或调整内存参数(修改 `bin/startup.sh`)。 2. **配置未生效** 确保 `bootstrap.yml` 中正确配置 Nacos 地址: ```yaml spring: cloud: nacos: config: server-addr: localhost:8848 ``` 3. **服务注册失败** 检查依赖是否添加,且 `@EnableDiscoveryClient` 注解已启用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值