授课语音

通过实践掌握Nacos的配置与管理使用

Nacos 是一个开源的动态服务发现、配置管理和服务管理平台,广泛应用于微服务架构中。它通过提供统一的服务发现和配置管理功能,简化了微服务系统的开发与运维工作。Nacos 不仅支持 DNS 和 HTTP 两种服务发现方式,还支持多种配置管理方式,特别适合在微服务架构中使用。

本课件将深入介绍 Nacos 的配置与管理使用,帮助大家通过实践掌握如何使用 Nacos 进行服务注册、配置管理以及动态管理服务。


1. Nacos概述

1.1 Nacos的核心功能

Nacos 提供了以下几种核心功能,旨在解决微服务架构中的配置管理和服务发现问题:

  • 服务注册与发现:通过 Nacos,微服务可以注册到 Nacos 中,其他服务可以通过服务名称进行动态发现。
  • 配置管理:Nacos 提供了一个灵活的配置管理中心,支持配置的动态推送,确保配置更新无缝生效。
  • 动态配置管理:支持对配置信息的实时更新,避免了重启服务的操作。
  • 集群与高可用:Nacos 提供高可用性部署方案,确保服务注册和配置管理的稳定性。

1.2 Nacos的架构

Nacos 的架构主要包括三个部分:

  • Client:客户端应用,主要用于注册服务到 Nacos 服务中心,并获取所需的配置信息。
  • Server:Nacos 服务端,处理服务注册、服务发现以及配置的管理工作。
  • Repository:存储服务和配置的数据源,通常可以使用 MySQL 或嵌入式的 H2 数据库。

2. Nacos的配置与管理使用

2.1 安装与启动 Nacos

2.1.1 安装 Nacos

Nacos 提供了多种部署方式,包括单机模式和集群模式。下面是使用 Docker 安装 Nacos 的方式:

# 拉取最新的 Nacos 镜像
docker pull nacos/nacos-server

# 运行 Nacos 服务
docker run -d --name nacos -p 8848:8848 nacos/nacos-server

通过上述命令,我们将 Nacos 服务启动在本地的 8848 端口上。

2.1.2 启动 Nacos 服务

如果不使用 Docker,可以直接下载 Nacos 的压缩包进行安装,解压后进入目录,执行以下命令启动 Nacos:

sh startup.sh -m standalone

Nacos 启动后,我们可以通过浏览器访问 http://localhost:8848/nacos 查看 Nacos 的控制台。


3. 服务注册与发现

3.1 服务注册

服务可以通过 Nacos 注册到注册中心,以下是一个 Spring Boot 应用通过 Nacos 注册服务的示例。

3.1.1 添加依赖

首先,在 Spring Boot 项目的 pom.xml 中添加 Nacos 相关的依赖:

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

3.1.2 配置 Nacos 注册中心

application.properties 中配置 Nacos 注册中心信息:

spring.application.name=my-service
spring.cloud.nacos.discovery.server-addr=localhost:8848

3.1.3 启动服务注册

在 Spring Boot 主类中添加 @EnableDiscoveryClient 注解,启用 Nacos 服务注册:

@SpringBootApplication
@EnableDiscoveryClient
public class MyServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyServiceApplication.class, args);
    }
}

服务启动后,my-service 服务将自动注册到 Nacos 上。

3.2 服务发现

当一个微服务启动时,它可以通过 Nacos 发现其他已注册的服务。以下是服务发现的配置示例:

3.2.1 服务发现配置

application.properties 中配置服务发现:

spring.cloud.nacos.discovery.server-addr=localhost:8848

3.2.2 调用服务

在调用其他微服务时,可以通过 Nacos 实现服务发现。例如,使用 RestTemplate 调用注册在 Nacos 上的 my-service 服务:

@Configuration
public class ServiceConfig {

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

然后可以通过 RestTemplate 实现跨服务的调用:

@Autowired
private RestTemplate restTemplate;

public String callService() {
    return restTemplate.getForObject("http://my-service/hello", String.class);
}

4. 配置管理

4.1 配置发布与管理

Nacos 提供了强大的配置管理功能,允许我们动态地修改配置,并且能够实时推送给客户端。以下是配置的管理操作流程。

4.1.1 配置发布

在 Nacos 控制台中,我们可以通过以下步骤进行配置发布:

  1. 登录到 Nacos 控制台,点击 配置管理
  2. 点击 发布配置,填写配置 ID、数据类型(如 properties)以及配置内容。
  3. 点击 发布,将配置保存到 Nacos 中。

4.1.2 配置获取

在 Spring Boot 项目中,我们可以通过 Nacos 客户端获取配置信息。以下是获取配置的代码示例:

spring.application.name=my-service
spring.cloud.nacos.config.server-addr=localhost:8848

然后,使用 @Value@ConfigurationProperties 注解来读取配置信息:

@Value("${my.custom.property}")
private String customProperty;

当配置发生变化时,Nacos 会自动将最新配置推送到客户端。

4.1.3 动态刷新配置

Nacos 支持配置的动态刷新功能。当配置变更时,Nacos 会自动通知客户端,并刷新相关配置。为启用配置动态刷新,首先需要在项目中添加 @RefreshScope 注解:

@RefreshScope
@RestController
public class ConfigController {

    @Value("${my.custom.property}")
    private String customProperty;

    @RequestMapping("/config")
    public String getConfig() {
        return customProperty;
    }
}

5. Nacos高可用配置与管理

5.1 集群模式部署

为了确保 Nacos 的高可用性,可以采用集群模式进行部署。以下是集群部署的配置示例:

  1. 配置多个 Nacos 实例,每个实例的 application.properties 配置如下:
server.address=localhost:8848
  1. 启动多个 Nacos 实例,并确保它们能够正常通信。

  2. 配置 MySQL 数据源用于存储 Nacos 配置数据:

spring.datasource.platform=mysql
spring.datasource.url=jdbc:mysql://localhost:3306/nacos_config
  1. 在控制台中查看集群状态,确保服务的高可用性。

5.2 动态配置与容灾

在集群模式下,Nacos 会自动处理故障转移和数据同步,确保在一个节点失效时,其他节点可以继续提供服务。


6. 总结

通过本课程的学习,您应该能够掌握 Nacos 在微服务架构中的使用,包括服务注册与发现、配置管理以及动态配置更新。通过 Nacos 中间件,您可以实现微服务架构中的高可用性、弹性扩展以及高效的配置管理。掌握 Nacos 的使用对于提高微服务架构的稳定性、可维护性以及扩展性具有重要意义。

去1:1私密咨询

系列课程: