Nacos简介、安装与使用(保姆级教程!!!)

目录

[一、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. 服务注册与发现)

(1)引入依赖

[(2)配置 Nacos 服务地址](#(2)配置 Nacos 服务地址)

(3)注册服务

(4)服务发现

[2. 配置管理](#2. 配置管理)

(1)引入依赖

[(2)配置 Nacos 配置中心地址](#(2)配置 Nacos 配置中心地址)

[(3)在 Nacos 控制台添加配置](#(3)在 Nacos 控制台添加配置)

(4)在应用中获取配置


在当今分布式系统和微服务架构盛行的时代,服务发现与配置管理成为了关键环节。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的数据库表,我们首先把这个导入到 我们自己本地的数据库中,具体步骤我写在这里了,不会的可以去看看:

https://blog.csdn.net/2202_75481735/article/details/146054885?spm=1001.2014.3001.5501https://blog.csdn.net/2202_75481735/article/details/146054885?spm=1001.2014.3001.5501

这里把数据库导入后就可以进行一些配置了,还是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 控制台修改配置内容后,应用会自动获取到最新的配置值,无需重启应用。

相关推荐
Java码农也是农8 小时前
RabbitMQ的四种交换机
学习·spring cloud·rabbitmq
李恩1112 小时前
常用的分布式ID设计方案
java·spring cloud
xiaogg367816 小时前
kubectl 运行脚本 kubernetes 部署springcloud微服务 yaml + Dockerfile+shell 脚本
spring cloud·微服务·kubernetes
m0_748251521 天前
【图文详解】什么是微服务?什么是SpringCloud?
spring cloud·微服务·架构
WeiLai11121 天前
面试基础---Spring Cloud 微服务架构中的网关:Spring Cloud Gateway 与 Zuul 深度解析
java·spring boot·分布式·后端·spring cloud·面试·架构
web182854825121 天前
【云原生】SpringCloud-Spring Boot Starter使用测试
spring boot·spring cloud·云原生
WeiLai11122 天前
面试基础---Spring Cloud微服务负载均衡架构
spring boot·分布式·后端·spring·spring cloud·面试·架构
gentle coder3 天前
【框架】Spring、SpringBoot和SpringCloud区别
spring boot·spring·spring cloud
customer083 天前
【开源免费】基于SpringBoot+Vue.JS酒店管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·开源