当前位置: 首页 > news >正文

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

       

目录

一、Nacos 简介

1. 什么是 Nacos

2. Nacos 的核心功能

3. Nacos 的优势

二、Nacos 安装

1. 环境准备

2. 下载 Nacos

3. 解压安装包

4. 启动 Nacos

三、Nacos 使用

1. 服务注册与发现

(1)引入依赖

(2)配置 Nacos 服务地址

(3)注册服务

(4)服务发现

2. 配置管理

(1)引入依赖

(2)配置 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 服务发现依赖:

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

</dependency>
(2)配置 Nacos 服务地址

在application.yml文件中配置 Nacos 服务地址:

spring:

cloud:

nacos:

discovery:

server-addr: localhost:8848
(3)注册服务

在 Spring Boot 应用的启动类上添加@EnableDiscoveryClient注解,开启服务发现功能:

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:

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 配置管理依赖:

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

</dependency>
(2)配置 Nacos 配置中心地址

在bootstrap.yml文件中配置 Nacos 配置中心地址:

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,配置内容如下:

message: Hello, Nacos!
(4)在应用中获取配置

在 Spring Boot 应用中,可以通过@Value注解来获取配置值:

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 控制台修改配置内容后,应用会自动获取到最新的配置值,无需重启应用。

相关文章:

  • ProfibusDP主站转ModbusTCP网关如何进行数据互换
  • 学习日记-250305
  • 大数据环境(单机版) Flume传输数据到Kafka
  • C++ JSON库的使用示例
  • MambaMorph:基于 Mamba 的医学 MR-CT 可变形配准框架
  • scBaseCamp:一个AI代理的可持续扩充的单细胞数据存储库
  • Huggingface transformers库使用教程(翻译)--------(2)使用piplines进行推理
  • IDC权威认证!永洪科技入选 IDC「GBI图谱」,点亮生成式 BI 价值灯塔
  • 【Linux】使用问题汇总
  • MySQL-多表查询
  • 模拟数据文件少写“+”加在本地如何恢复?
  • Java 实现 Oracle 的 MONTHS_BETWEEN 函数
  • 在PyCharm开发环境中,如何建立hello.py文件?
  • 小菜鸟系统学习Python-迭代实现斐波那契和汉诺塔问题
  • C语言——链表
  • 国产替代新篇章:领麦微红外测温传感器赋能3D打印精准制造
  • 开启科创服务新篇章:八月瓜科技CRM数字化管理系统成功上线
  • 永磁直驱式风力发电虚拟同步机仿真模型Matlab/Simulink模型
  • 从数据到决策,永洪科技助力良信电器“智”领未来
  • 【CV001】归一化互相关模板匹配matlab实现
  • 渭南建设工程招标投标网站/企业推广策划书
  • 电商seo推广/seo品牌优化
  • 吉林省吉林市区号/seo算法优化
  • 怎么自己在电脑上做网站/《新闻联播》 今天
  • 长沙专业的网站建设企业/百度推广电话客服
  • Ext做网站/深圳短视频推广