Java微服务之nacos的使用及说明

 更新时间:2026年02月11日 16:29:52   作者:张万森爱喝可乐  
Nacos是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台,支持多种服务类型和核心功能,包括服务注册与发现、动态配置服务、动态DNS服务和元数据管理

Nacos 简介

Nacos 是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。Nacos 支持几乎所有主流类型的服务发现、配置和管理,包括 Kubernetes 服务、Spring Cloud 服务、Dubbo 服务等。

Nacos 的核心功能包括服务注册与发现、动态配置服务、动态 DNS 服务和元数据管理。

Nacos 名称来源于“Naming”和“Configuration”的组合,即“命名”和“配置”。Nacos 的设计目标是简化微服务架构中的服务治理和配置管理,提供高可用、高性能和易扩展的解决方案。

Nacos 核心功能

服务注册与发现

Nacos 支持服务的自动注册与发现。服务提供者启动时向 Nacos 注册自己的服务,服务消费者通过 Nacos 获取服务提供者的地址列表,实现服务的动态调用。

动态配置服务

Nacos 提供动态配置管理功能,支持配置的动态更新和推送。配置变更时,Nacos 会实时通知订阅该配置的服务,无需重启服务即可生效。

动态 DNS 服务

Nacos 支持基于 DNS 的服务发现,可以将服务名解析为具体的 IP 地址和端口。Nacos 还支持权重路由和健康检查,确保流量的合理分配。

元数据管理

Nacos 支持服务的元数据管理,可以为服务添加自定义的标签和属性,便于服务的分类和筛选。

Nacos 安装与部署

Nacos 支持多种部署方式,包括单机模式、集群模式和 Docker 部署。以下以单机模式为例介绍 Nacos 的安装步骤。

下载 Nacos

从 Nacos 的 GitHub 仓库下载最新版本的安装包:

wget https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.tar.gz

解压并启动

解压下载的安装包并启动 Nacos:

tar -xvf nacos-server-2.0.3.tar.gz
cd nacos/bin
sh startup.sh -m standalone

访问控制台

启动成功后,访问 http://localhost:8848/nacos,默认用户名和密码均为 nacos

Nacos 服务注册与发现

以下通过一个简单的 Spring Boot 项目演示如何使用 Nacos 进行服务注册与发现。

创建 Spring Boot 项目

创建一个 Spring Boot 项目,添加以下依赖:

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

配置 Nacos 服务器地址

application.yml 中配置 Nacos 服务器地址:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
  application:
    name: nacos-demo

启动服务

启动 Spring Boot 项目,服务会自动注册到 Nacos。打开 Nacos 控制台,可以在“服务列表”中看到注册的服务。

服务调用

通过 RestTemplateFeign 调用其他服务:

@RestController
public class DemoController {
    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/call")
    public String call() {
        return restTemplate.getForObject("http://nacos-demo/hello", String.class);
    }
}

Nacos 动态配置管理

Nacos 的动态配置管理功能允许在不重启服务的情况下更新配置。以下演示如何使用 Nacos 管理配置。

添加配置管理依赖

在项目中添加以下依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>

创建配置文件

在 Nacos 控制台中创建一个配置,Data ID 为 nacos-demo.properties,内容如下:

demo.message=Hello Nacos

加载配置

bootstrap.yml 中配置 Nacos 服务器地址和数据 ID:

spring:
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: properties
        name: nacos-demo

使用配置

通过 @Value 注解获取配置值:

@RestController
public class ConfigController {
    @Value("${demo.message}")
    private String message;

    @GetMapping("/message")
    public String getMessage() {
        return message;
    }
}

动态更新配置

在 Nacos 控制台中修改 demo.message 的值,服务会实时获取最新的配置。

Nacos 高级特性

命名空间

Nacos 支持多命名空间,用于隔离不同环境或团队的配置和服务。可以在 application.yml 中指定命名空间:

spring:
  cloud:
    nacos:
      discovery:
        namespace: dev
      config:
        namespace: dev

配置分组

Nacos 支持配置分组,可以对配置进行逻辑隔离。可以在 bootstrap.yml 中指定分组:

spring:
  cloud:
    nacos:
      config:
        group: DEFAULT_GROUP

健康检查

Nacos 提供健康检查机制,自动剔除不健康的服务实例。可以通过以下配置调整健康检查的间隔:

spring:
  cloud:
    nacos:
      discovery:
        heartbeat-interval: 5000
        heartbeat-timeout: 15000

Nacos 集群部署

为了提高可用性,Nacos 支持集群部署。以下是集群部署的步骤。

修改集群配置

conf/cluster.conf 中配置集群节点的 IP 和端口:

192.168.1.1:8848
192.168.1.2:8848
192.168.1.3:8848

启动集群

在每个节点上启动 Nacos:

sh startup.sh

配置负载均衡

通过 Nginx 或其他负载均衡工具将请求分发到集群节点:

upstream nacos-cluster {
    server 192.168.1.1:8848;
    server 192.168.1.2:8848;
    server 192.168.1.3:8848;
}

server {
    listen 8848;
    server_name localhost;
    location / {
        proxy_pass http://nacos-cluster;
    }
}

总结

Nacos 是一个功能强大的服务发现和配置管理平台,支持动态服务注册、配置管理和健康检查。

通过本文的介绍,可以了解 Nacos 的基本功能和使用方法,并掌握其高级特性和集群部署方式。

Nacos 的易用性和高性能使其成为微服务架构中的理想选择。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring常用注解及自定义Filter的实现

    Spring常用注解及自定义Filter的实现

    这篇文章主要介绍了Spring常用注解及自定义Filter的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • springboot lua检查redis库存的实现示例

    springboot lua检查redis库存的实现示例

    本文主要介绍了springboot lua检查redis库存的实现示例,为了优化性能,通过Lua脚本实现对多个马戏场次下的座位等席的库存余量检查,感兴趣的可以了解一下
    2024-09-09
  • maven安装配置的实现步骤

    maven安装配置的实现步骤

    本文主要介绍了maven安装配置的实现步骤,包括下载和安装Maven,配置Maven的环境变量,以及创建Maven项目,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Java下界通配符(? super Type)的使用

    Java下界通配符(? super Type)的使用

    在Java中,? super Type是一个下界通配符,本文主要介绍了Java下界通配符(? super Type)的使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Maven 打包跳过Test目录的三种解决方法

    Maven 打包跳过Test目录的三种解决方法

    本文主要介绍了Maven 打包跳过Test目录的三种解决方法,包括修改pom.xml跳过测试、命令行执行跳过、IDEA设置跳过test目录,感兴趣的可以了解一下
    2025-05-05
  • springboot后端使用LocalDate接收日期的问题解决

    springboot后端使用LocalDate接收日期的问题解决

    在做Java开发时,肯定会碰到传递时间参数的情况,本文主要介绍了springboot后端使用LocalDate接收日期的问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • 用IDEA创建SpringBoot项目的详细步骤记录

    用IDEA创建SpringBoot项目的详细步骤记录

    Idea有着非常简便的Spring Boot新建过程,同时依靠pom自动下载依赖,下面这篇文章主要给大家介绍了关于用IDEA创建SpringBoot项目的详细步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • MyBatis实现动态SQL的实现方法

    MyBatis实现动态SQL的实现方法

    这篇文章主要介绍了MyBatis实现动态SQL的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Struts2访问Servlet的三种方式

    Struts2访问Servlet的三种方式

    这篇文章主要介绍了Struts2访问Servlet的三种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • java异常处理执行顺序详解try catch finally

    java异常处理执行顺序详解try catch finally

    try catch语句是java语言用于捕获异常并进行处理的标准方式,对于try catch及try catch finally执行顺序必须有深入的了解
    2021-10-10

最新评论