目录
[一、Nacos 简介](#一、Nacos 简介)
[1. 什么是 Nacos](#1. 什么是 Nacos)
[2. Nacos 的核心功能](#2. Nacos 的核心功能)
[3. Nacos 的优势](#3. Nacos 的优势)
[二、Nacos 安装](#二、Nacos 安装)
[1. 环境准备](#1. 环境准备)
[2. 下载 Nacos](#2. 下载 Nacos)
[3. 解压安装包](#3. 解压安装包)
[4. 启动 Nacos](#4. 启动 Nacos)
[三、Nacos 使用](#三、Nacos 使用)
[1. 服务注册与发现](#1. 服务注册与发现)
[(2)配置 Nacos 服务地址](#(2)配置 Nacos 服务地址)
[2. 配置管理](#2. 配置管理)
[(2)配置 Nacos 配置中心地址](#(2)配置 Nacos 配置中心地址)
[(3)在 Nacos 控制台添加配置](#(3)在 Nacos 控制台添加配置)
在当今分布式系统和微服务架构盛行的时代,服务发现与配置管理成为了关键环节。Nacos 作为阿里巴巴开源的一个易于使用的动态服务发现、配置管理和服务管理平台,正逐渐受到广大开发者的青睐。

一、Nacos 简介
1. 什么是 Nacos
Nacos 是 "Dynamic Naming and Configuration Service" 的缩写,即动态命名与配置服务。它致力于帮助开发者更轻松地构建、管理和维护分布式系统中的服务。通过 Nacos,开发者可以实现服务的自动注册与发现,动态配置管理,以及服务的健康检查等功能,大大简化了分布式系统的开发与运维。 Nacos是一个开源的动态服务发现、配置和服务管理平台,由阿里巴巴开发和维护。
2. Nacos 的核心功能
- 服务发现与注册 :Nacos 允许服务提供者将自己注册到 Nacos 服务器上,并通过 Nacos 服务器提供的服务发现功能,让服务消费者能够轻松找到目标服务。例如,在一个电商系统中,商品服务、订单服务等可以注册到 Nacos,当用户查看商品详情时,商品服务的消费者(如前端应用)能够通过 Nacos 快速发现并调用商品服务。
- 配置管理:Nacos 提供了统一的配置管理中心,支持动态配置更新。开发者可以将应用的配置信息集中存储在 Nacos 中,当配置发生变化时,应用能够实时获取到最新的配置,而无需重启应用。这在一些需要频繁调整配置参数(如数据库连接字符串、缓存策略等)的场景中非常实用。
- 服务健康检查:Nacos 会定期检查注册服务的健康状态,一旦发现某个服务不可用,会将其从服务列表中剔除,避免服务消费者调用到不健康的服务,从而保证整个系统的稳定性。
3. Nacos 的优势
- 易于使用:Nacos 提供了简洁易用的控制台界面,通过直观的操作即可完成服务注册、配置管理等任务,降低了开发者的学习成本。
- 支持多种协议:它支持主流的服务发现和配置管理协议,如 HTTP、DNS 等,能够很好地与现有的微服务框架(如 Spring Cloud、Dubbo 等)集成。
- 高可用性:Nacos 采用了集群架构,通过多节点部署来保证系统的高可用性,即使部分节点出现故障,整个系统仍能正常运行。
二、Nacos 安装
1. 环境准备
在安装 Nacos 之前,需要确保系统中已经安装了 Java 环境。Nacos 要求 Java 版本为 1.8 及以上。可以通过以下命令检查 Java 是否安装及版本:
java -version
如果未安装 Java,可以从 Oracle 官网或 OpenJDK 官网下载并安装。
2. 下载 Nacos
前往 Nacos 官方 GitHub 仓库的Releases 页面
下载地址:下载地址http://下载地址:https://github.com/alibaba/nacos/releases/tag/1.4.2 我们选择windows版本
我们选择windows版本,下载适合自己操作系统的安装包。以 Windows 系统为例,下载后缀为.zip的文件。

3. 解压安装包
将下载的.zip文件解压到指定目录,例如D:\nacos。解压后的目录结构如下:

4. 启动 Nacos
进入nacos\bin目录,对于 Windows 系统,可以双击startup.cmd文件来启动 Nacos。

如果是 Linux 或 Mac 系统,可以在终端中执行以下命令:
sh startup.sh -m standalone
这里的-m standalone参数表示以单机模式启动 Nacos,适用于开发和测试环境。如果需要集群模式,可以参考 Nacos 官方文档进行配置。
启动的时候很大概率会出现很多错误,比如连接不上数据库,网络模式不对等等,所有在启动之前一定要准备一些工作
1、导入数据库
在我们的nacos\conf文件中

会自带一个nacos-mysql.sql的数据库表,我们首先把这个导入到 我们自己本地的数据库中,具体步骤我写在这里了,不会的可以去看看:

这里把数据库导入后就可以进行一些配置了,还是conf目录下,我们点击这个application.properties文件进行一些配置。

点击进行编辑文件,我们可以选择文本文档编辑,也可以用别的编辑器编辑。按照下图中进行配置即可,数据库的账户名和密码一定要和本地的相同,还有url,路径一定要写和我们数据库名字一样,
这个配置完成数据库连接就没啥问题了,接下来我们来解决网络问题,还是同一个目录下,我们点击cluster.conf这个文件,如果你刚下载完可能是cluster.conf.example文件,相当一个配置的例子,我们可以创建一个cluster.conf文件。

如果我们要是进行单机网络的话直接把这个文件清空就行,啥也不留。如果要是集群的话就需要配置一下,在此我就只展示单机模式。然后再回到启动文件

鼠标右键,选择文本编辑。rem set MODE="cluster",set MODE="standalone",这两个是选择模式的意思我们在set MODE="cluster"前面加一个rem,代表注释掉这个,就留一个单机模式。完事直接点击保存退出即可。

然后直接双击启动文件就行了,看看能不能成功。

像这样有成功的字眼,那就没问题,服务器就会正常启动,有时候会显示一个mysql连接的时区报错,我们在application.properties文件中的url 加一个serverTimezone=Asia/Shanghai就行。如果还有别的错误可以上网搜搜解决办法。
启动成功后,在浏览器中访问http://localhost:8848/nacos,即可看到 Nacos 的登录页面。默认的用户名和密码均为nacos。

这样就算登录成功啦!!

三、Nacos 使用
1. 服务注册与发现
(1)引入依赖
以 Spring Cloud 项目为例,在pom.xml文件中添加 Nacos 服务发现依赖:
XML
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
(2)配置 Nacos 服务地址
在application.yml文件中配置 Nacos 服务地址:
XML
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
(3)注册服务
在 Spring Boot 应用的启动类上添加@EnableDiscoveryClient注解,开启服务发现功能:
java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
启动应用后,在 Nacos 控制台的 "服务管理" -> "服务列表" 中可以看到注册成功的服务。
(4)服务发现
在服务消费者的代码中,可以通过 Spring Cloud 的RestTemplate或FeignClient来调用注册在 Nacos 上的服务。例如,使用RestTemplate:
java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.List;
@RestController
public class ConsumerController {
@Autowired
private DiscoveryClient discoveryClient;
@Autowired
private RestTemplate restTemplate;
@GetMapping("/consumer")
public String consumeService() {
List<ServiceInstance> instances = discoveryClient.getInstances("service-provider");
if (instances.isEmpty()) {
return "No instances available";
}
ServiceInstance instance = instances.get(0);
String url = "http://" + instance.getHost() + ":" + instance.getPort() + "/provider";
return restTemplate.getForObject(url, String.class);
}
}
2. 配置管理
(1)引入依赖
在项目的pom.xml中添加 Nacos 配置管理依赖:
XML
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
(2)配置 Nacos 配置中心地址
在bootstrap.yml文件中配置 Nacos 配置中心地址:
XML
spring:
application:
name: example-app
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
这里的file-extension指定了配置文件的格式为yaml。
(3)在 Nacos 控制台添加配置
在 Nacos 控制台的 "配置管理" -> "配置列表" 中,点击 "+" 号添加新的配置。Data ID 填写example-app.yaml,配置内容如下:
XML
message: Hello, Nacos!
(4)在应用中获取配置
在 Spring Boot 应用中,可以通过@Value注解来获取配置值:
java
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConfigController {
@Value("${message}")
private String message;
@GetMapping("/config")
public String getConfig() {
return message;
}
}
当在 Nacos 控制台修改配置内容后,应用会自动获取到最新的配置值,无需重启应用。