微服务Nacos组件的介绍、安装、使用

news2025/4/24 20:24:45

微服务Nacos组件的介绍、安装、使用

在微服务架构日渐普及的今天,服务注册与配置管理成了系统架构中的关键环节。阿里巴巴开源的 Nacos(Naming and Configuration Service)正是解决这一问题的利器。本文将为你全面介绍 Nacos 的概念、安装方式、集成 Spring Boot 的实战用法及常见问题,助你快速上手并应用到实际项目中。


一、Nacos 是什么?

Nacos 是一个更易于构建云原生应用的服务发现、配置管理和服务治理平台。它提供了类似于 Netflix Eureka + Spring Cloud Config 的能力,并且集成了一整套健康检查、动态配置和服务管理能力。

核心能力概览:

  1. 服务注册与发现:支持动态注册与发现服务实例,支持 DNS、REST、gRPC 协议。
  2. 配置中心:集中化配置管理,支持配置热更新和版本控制。
  3. 服务健康检查:通过心跳机制实现服务自动摘除和健康状态监控。
  4. 多环境/命名空间支持:方便在开发、测试、生产环境之间做隔离。
  5. 权限控制与审计:基于角色的访问控制(RBAC),记录配置变更历史。

二、Nacos 的安装

1. 环境准备

  • JDK 8 或以上
  • Maven(如需构建源码)
  • MySQL(用于生产环境持久化配置和注册信息)
  • Docker(推荐使用 Docker 启动测试环境)

2. 下载与启动

Docker拉取nacos镜像
docker pull nacos/nacos-server:v2.3.0
Docker查看nacos镜像
docker images

在这里插入图片描述

Docker 启动(推荐)
docker run -d --name nacos-server \
  -p 8848:8848 \
  -p 9848:9848 \
  -e MODE=standalone \
  --restart=always \
  nacos/nacos-server:v2.3.0

在这里插入图片描述

默认访问地址:http://你自己的ip:8848/nacos
默认用户名/密码:nacos / nacos

在这里插入图片描述

三、Nacos 与 Spring Boot 的集成使用

1. 服务注册与发现

依赖引入
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2. 配置中心集成

添加依赖
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
application.yml 配置
spring:
  application:
    name: learn-server
  config:
    import: nacos:${spring.application.name}.yaml
  cloud:
    nacos:
      discovery:
        server-addr: 你自己的IP:8848 # Nacos 注册中心的地址
        namespace: learn-server-namespace-id  # 如果使用自定义命名空间,可以配置此项
      config:
        server-addr: 你自己的IP:8848 # Nacos 配置中心的地址
        file-extension: yaml # 配置文件的格式,yaml 或 properties
        refreshable: true  # 是否支持动态刷新配置
        shared-configs: # 可选的共享配置文件
#          - dataid: db_shared.yaml
            group: DEFAULT_GROUP
            refresh: true
        namespace: public

服务启动后会自动注册到 Nacos 控制台

在这里插入图片描述

其他服务可通过服务名访问,如:

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

restTemplate.getForObject("http://learn-server/hello", String.class);
控制台中添加配置
  • Data ID:learn-server.yaml
  • Group:DEFAULT_GROUP
  • 配置内容:
demo:
  name: nacos-config

在这里插入图片描述

在这里插入图片描述

Controller 中读取配置
@RefreshScope
@RestController
public class ConfigController {
  @Value("${demo.name}")
  private String name;

  @GetMapping("/config")
  public String getName() {
    return name;
  }
}

浏览器访问:localhost:10010/config ,成功返回

在这里插入图片描述

实时修改Nacos中的配置:
在这里插入图片描述

再次访问localhost:10010/config ,成功返回

在这里插入图片描述

四、常见问题 & 实用技巧

Q1:如何分环境隔离配置?

使用 namespace,推荐一套环境一个 namespace,如 dev、test、prod。

Q2:Nacos 配置支持哪些格式?

支持 .properties.yaml.json 等主流配置格式。

Q3:如何做权限控制?

  • 登录管理界面,创建角色、用户,绑定命名空间与配置操作权限。
  • 配合企业 LDAP、OAuth 认证可实现统一登录。

Q4:如何在集群部署?

  • 修改 application.properties 指定数据库信息
  • 部署多个节点,开启心跳互通与选举机制

五、总结与推荐实践

Nacos 是构建现代微服务系统的重要基础组件,兼具配置中心与服务注册能力,特别适合使用 Spring Cloud Alibaba 技术栈的团队。它不仅降低了系统配置复杂度,也大大提升了服务的动态管理能力。
群部署?

  • 修改 application.properties 指定数据库信息
  • 部署多个节点,开启心跳互通与选举机制

五、总结与推荐实践

Nacos 是构建现代微服务系统的重要基础组件,兼具配置中心与服务注册能力,特别适合使用 Spring Cloud Alibaba 技术栈的团队。它不仅降低了系统配置复杂度,也大大提升了服务的动态管理能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2341926.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot_为何需要SpringBoot?

Spring Boot 出现前的开发困境 配置繁琐 大量的 XML 配置文件 Spring 是一个非常优秀的轻量级框架&#xff0c;但其配置却是重量级的需要编写大量的 XML 配置文件或注解配置&#xff0c;使项目配置复杂且难以维护配置文件中容易出现错误&#xff0c;且排查问题困难开发过程中…

格式工厂 v5.18最新免安装绿色便携版

前言 用它来转视频的时候&#xff0c;还能顺便给那些有点小瑕疵的视频修修补补&#xff0c;保证转出来的视频质量杠杠的。更厉害的是&#xff0c;它不只是转换那么简单&#xff0c;还能帮你把PDF合并成一本小册子&#xff0c;视频也能合并成大片&#xff0c;还能随心所欲地裁剪…

MQTTX + MCP:MQTT 客户端秒变物联网 Agent

引言&#xff1a;MQTTX 与 MCP 的融合 作为最受欢迎的 MQTT 客户端工具&#xff0c;MQTTX 在 1.12.0 beta 版本中集成了模型上下文协议&#xff08;MCP&#xff09;到 Copilot AI 功能中&#xff0c;显著提升了服务能力。这一融合让 MQTTX 转变为 MCP Host&#xff08;也就是发…

快手砍掉本地生活的门槛

一场本地商家的效率革命。 作者|景行 编辑|杨舟 “两斤鸡翅根七块九&#xff0c;两盒蓝莓九块钱&#xff0c;两公斤卫生纸十四块九一提。” 这是朝阳佳惠超市&#xff0c;在快手一则普通的短视频内容。 佳惠超市在辽宁省朝阳市有22家分店&#xff0c;打开佳惠超市的相关快手…

Python基础语法3

目录 1、函数 1.1、语法格式 1.2、函数返回值 1.3、变量作用域 1.4、执行过程 1.5、链式调用 1.6、嵌套调用 1.7、函数递归 1.8、参数默认值 1.9、关键字参数 2、列表 2.1、创建列表 2.2、下标访问 2.3、切片操作 2.4、遍历列表元素 2.5、新增元素 2.6、查找元…

【AI】Windows环境安装SPAR3D单图三维重建心得

效果一览 左图为原始单个图像&#xff0c;右图为通过SPAR3D重建后的三维建模&#xff0c;可以看出效果还是不错的。 本地环境配置 系统&#xff1a;Windows 11 专业版CPU&#xff1a;i5-13400F内存&#xff1a;32GBGPU&#xff1a;RTX3060 12GBcuda&#xff1a;11.8conda&…

使用docker在manjaro linux系统上运行windows和ubuntu

因为最近项目必须要使用指定版本的solidworks和maxwell&#xff08;都只能在win系统上使用&#xff09;, 且目前的ubuntu容器是没有桌面的&#xff0c;导致我运行不了一些带图形的ros2功能。无奈之下&#xff0c;决定使用docker-compose写一下配置文件&#xff0c;彻底解决问题…

Redis(01)Redis连接报错Redis is running in protected mode……的解决方案

一、引言&#xff1a;从一个典型连接错误说起 在分布式系统开发中&#xff0c;Redis 作为高性能缓存中间件被广泛使用。 然而&#xff0c;当我们首次部署 Redis 并尝试从外部客户端连接时&#xff0c;常常会遇到以下错误&#xff1a; DENIED Redis is running in protected m…

18487.1-2015-解读笔记之四-交流充电之流程分析

前面简单分析了国标交流充电桩插枪监测逻辑和PWM控制逻辑&#xff0c;下面简单分析一下交流充电流程 附录A 交流充电连接过程和控制时序如下&#xff1a; 由此可以将充电流程大概分为几个阶段&#xff1a; 1.充电连接阶段 充电连接阶段CC&#xff08;电阻由无穷大到R4RC&…

Linux 管道理解

一、什么是管道 1.1 unix中最古老的进程间通信 1.2 一个进程链接到另一个进程的数据流称为“管道”&#xff1a; 图解&#xff1a; 二、管道通信的原理 2.1当我们创建一个进程然后打开一个文件的时候 会经过以下步骤&#xff1a; ①首先要描述这个进程&#xff0c;为这个…

国产RK3568+FPGA以 ‌“实时控制+高精度采集+灵活扩展”‌ 为核心的解决方案

RK3568FPGA方案在工业领域应用的核心优势 一、‌实时性与低延迟控制‌ ‌AMP架构与GPIO中断技术‌ 通过非对称多处理架构&#xff08;AMP&#xff09;实现Linux与实时操作系统&#xff08;RTOS/裸机&#xff09;协同&#xff0c;主核负责调度&#xff0c;从核通过GPIO中断响应紧…

Pycharm(十五)面向对象程序设计基础

目录 一、面向对象基本概述 class 类名: 属性(类似于定义变量) 行为(类似于定义函数,只不过第一个形参要写self) 二、self关键字介绍 三、在类内部调用类中的函数 四、属性的定义和调用 五、魔法方法init方法 六、魔法方法str和del方法 七、案例-减肥 一、…

华三(H3C)与华为(Huawei)设备配置IPsec VPN的详细说明,涵盖配置流程、参数设置及常见问题处理

以下是针对华三&#xff08;H3C&#xff09;与华为&#xff08;Huawei&#xff09;设备配置IPsec VPN的详细说明&#xff0c;涵盖配置流程、参数设置及常见问题处理&#xff1a; 一、华三&#xff08;H3C&#xff09;设备IPsec VPN配置详解 1. 配置流程 华三IPsec VPN配置主要…

店匠科技摘得 36 氪“2025 AI Partner 创新大奖”

全场景 AI 方案驱动跨境电商数智化跃迁 4 月 18 日,36 氪 2025 AI Partner 大会于上海盛大开幕。大会紧扣“Super App 来了”主题,全力探寻 AI 时代的全新变量,探索 AI 领域下一个超级应用的无限可能性。在此次大会上,跨境电商独立站 SaaS 平台店匠科技(Shoplazza)凭借“店匠跨…

Joint communication and state sensing under logarithmic loss

摘要——我们研究一种基本的联合通信与感知设置&#xff0c;其中发射机希望向接收机传输一条消息&#xff0c;并同时通过广义反馈估计其信道状态。我们假设感知目标是获得状态的软估计&#xff08;即概率分布&#xff09;&#xff0c;而非通常假设的点估计&#xff1b;并且我们…

Linux:41线程控制lesson29

1.线程的优点&#xff1a; • 创建⼀个新线程的代价要⽐创建⼀个新进程⼩得多 创建好线程只要调度就好了 • 与进程之间的切换相⽐&#xff0c;线程之间的切换需要操作系统做的⼯作要少很多 为什么&#xff1f; ◦ 最主要的区别是线程的切换虚拟内存空间依然是相同的&#x…

HTMLCSS实现网页轮播图

网页中轮播图区域的实现与解析 在现代网页设计中&#xff0c;轮播图是一种常见且实用的元素&#xff0c;能够在有限的空间内展示多个内容&#xff0c;吸引用户的注意力。下面将对上述代码中轮播图区域的实现方式进行详细介绍。 一、HTML 结构 <div class"carousel-c…

Java基础第21天-正则表达式

正则表达式是对字符串执行模式匹配的技术 如果想灵活的运用正则表达式&#xff0c;必须了解其中各种元字符的功能&#xff0c;元字符从功能上大致分为&#xff1a; 限定符选择匹配符分组组合和反向引用符特殊字符字符匹配符定位符 转义号\\:在我们使用正则表达式去检索某些特…

CSGO 盲盒开箱系统技术实现深度解析

一、系统架构设计 &#xff08;一&#xff09;前后端分离架构 采用前后端分离模式&#xff0c;后端专注业务逻辑处理与数据管理&#xff0c;前端负责用户交互界面呈现。后端通过 RESTful API 与前端进行数据交互&#xff0c;这种架构能有效提高开发效率&#xff0c;便于团队分…

JS通过GetCapabilities获取wms服务元数据信息并在SuperMap iClient3D for WebGL进行叠加显示

获取wms服务元数据信息并在三维webgl客户端进行叠加显示 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><tit…