Nacos 2.5.0 全文详解及配置(并解决WebServerException: Unable to start mbedded Tomcat)

ops/2025/1/30 22:45:41/

Nacos 2.5.0 下载:

已放置在博文中:https://download.csdn.net/download/xxiaobaibaibai/90299781

启动报错:

修改内容参考下方 Windows 配置 Nacos第四项(将Nacos启动修改为单机模式)

Nacos 概述

什么是 Nacos?

Nacos 是由阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。它为微服务架构提供了强大的支持,可以简化服务的注册、发现、配置和管理,帮助开发者更轻松地进行微服务架构的管理和维护。Nacos 支持多种服务发现方式(包括 DNS、REST API 等),并且具备强大的配置管理能力,特别是在云原生应用和容器化环境中,Nacos 显得尤为重要。

Nacos 的核心功能

  1. 服务发现与注册:通过 Nacos,微服务可以在启动时自动注册到注册中心,其他微服务则可以通过 Nacos 查询并访问这些服务。Nacos 支持多种协议(如 HTTP、gRPC)和负载均衡算法,能够动态调整服务实例的可用性。
  2. 配置管理:Nacos 作为配置中心,支持分布式配置的管理,允许在不同环境下对配置进行集中管理。其支持热更新功能,使得配置的修改可以即时生效,无需重启服务。
  3. 动态 DNS 服务:Nacos 提供 DNS 服务,支持根据服务实例的 IP 地址和端口号动态创建和更新 DNS 记录,方便客户端进行访问。
  4. 健康检查:Nacos 定期对服务实例进行健康检查,如果某个服务实例不健康,则会将其从服务发现列表中移除。

Nacos 的应用场景

Nacos 广泛应用于微服务架构、容器化和云原生应用中,尤其适用于如下场景:

  • 微服务架构:提供自动化的服务注册与发现机制,简化微服务之间的通信。
  • 配置管理:集中管理应用的配置信息,并支持动态刷新,无需重启服务。
  • 容器编排:与 Kubernetes 等容器编排平台结合,提供服务发现与配置管理的功能。
  • 动态 DNS:为分布式服务提供动态 DNS 解析。

Windows 配置 Nacos

  1. 初始化数据库:

    1. **创建数据库:**通过mysql可视化工具,例如Navicat连接数据库,并创建Nacos数据库。
    2. 导入数据:Navicat中选中Nacos数据库并右键选中后,点击运行SQL文件,进入nacos\conf目录下,找到mysql-schema.sql文件执行(或可以通过scoure 命令进行数据导入)。
  2. 修改配置文件:

    进入nacos\conf目录下,找到application.properties文件,进入其中找到以下内容删除注释:

    原文:

    # spring.datasource.platform=mysql
    # spring.sql.init.platform=mysql### Count of DB:
    # db.num=1### Connect URL of DB:
    # db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
    # db.user.0=nacos
    # db.password.0=nacos
    

    修改后:

    spring.datasource.platform=mysql
    # spring.sql.init.platform=mysql### Count of DB:
    db.num=1### Connect URL of DB:
    db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
    db.user.0=root
    db.password.0=nacos
    
  3. 修改日志配置:

    application.properties文件同级目录下找到nacos-logback.xml文件,进入其中找到以下内容进行全文替换:

    ${nacos.home} -> ..
    ${logPath} -> ../logs
    
  4. 将Nacos启动修改为单机模式:

    进入nacos\bin目录下,找到startup.cmd文件,通过编辑进入其中找到以下内容进行全文替换:

    set MODE = "cluster" -> set MODE = "standalone"
    
  5. 启动Nacos:

    点击startup.cmd文件,如果启动成功会提示:

    682 INFO Tomcat initialized with port(s): 8848 (http)
    
  6. 进入Nacos注册中心网址确认是否启动成功:

    默认URL为:

    http://localhost:8848/nacos
    

Nacos 与 Spring Cloud 集成

Spring Cloud Nacos Starter

Spring Cloud 提供了与 Nacos 的集成支持,用户可以通过 Spring Cloud Nacos Starter 快速将 Nacos 集成到 Spring Boot 项目中,实现服务注册与发现、配置管理等功能。

  • 服务注册与发现:Spring Cloud Nacos Starter 提供了自动配置,能够将服务自动注册到 Nacos,客户端也能自动从 Nacos 获取服务实例信息。

  • 配置管理:Spring Cloud Nacos Starter 支持将 Nacos 作为配置中心,自动加载 Nacos 上的配置文件,实现配置的动态更新。

  • 集成方式

    1. pom.xml 中添加 Nacos 依赖:

      <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      </dependency>
      
    2. 配置 application.yml 文件:

      spring:cloud:nacos:discovery:server-addr: localhost:8848config:server-addr: localhost:8848file-extension: yaml
      
    3. 使用 @NacosValue 注解从 Nacos 获取配置:

      @NacosValue(value = "${user.name}", autoRefreshed = true)
      private String userName;
      

通过这种集成方式,Spring Boot 项目可以轻松地与 Nacos 配合,实现微服务架构下的服务注册、发现和配置管理。


Nacos 架构设计

Nacos 的架构概述

Nacos 的架构由多个模块组成,其中主要包括服务发现与注册、配置管理、健康检查等模块。Nacos 作为一个分布式系统,支持高可用部署,能够应对大规模的服务注册和配置管理需求。

  1. 服务发现与注册模块:服务注册时会提供服务的基本信息(如 IP 地址、端口、元数据等),Nacos 会定期进行健康检查,保证服务的有效性。服务发现客户端可以向 Nacos 查询服务的最新状态。
  2. 配置管理模块:Nacos 提供统一的配置管理平台,可以将配置文件存储在 Nacos 中,并通过 API 或管理控制台进行修改,修改后的配置可以自动刷新,客户端无需重启即可获取最新的配置。
  3. 集群管理模块:Nacos 支持多节点部署,保证高可用性和负载均衡。服务实例和配置文件都存储在集群中,保证数据的一致性和可靠性。
  4. Web 控制台:提供 Web 控制台界面,用户可以方便地查看和管理服务、配置、健康检查等信息。

服务发现与注册

Nacos 的服务发现与注册模块基于以下几个关键功能:

  • 服务注册:每个服务实例在启动时会向 Nacos 注册自己的信息,如服务名称、IP 地址、端口、元数据等。服务实例通过心跳机制向 Nacos 维持活跃状态。
  • 服务发现:服务客户端可以通过 Nacos 查询服务的最新实例信息,获取服务的地址和端口,进行负载均衡和健康检查。
  • 健康检查:Nacos 会定期向服务实例发送心跳请求,检查服务是否可用。如果服务实例未响应心跳或返回不健康状态,Nacos 会将该实例从注册列表中移除,避免请求被路由到不可用的服务。

配置管理

Nacos 的配置管理模块包括以下核心功能:

  1. 配置存储:Nacos 支持分布式的配置存储,支持多种配置格式(如 Properties、YAML、JSON 等)。所有配置文件都集中存储在 Nacos 的配置中心中。
  2. 动态更新:配置文件可以动态更新,修改后的配置会立即生效,所有注册的服务会自动获取新的配置,而无需重启服务。
  3. 灰度发布:Nacos 提供灰度发布的支持,可以通过 Nacos 控制台或 API 实现配置的逐步发布,降低配置变更带来的风险。
  4. 配置加密:Nacos 支持配置加密,用户可以对敏感配置(如密码、密钥等)进行加密处理,确保数据安全。

Nacos 服务发现与注册

服务注册

服务实例启动时,客户端会向 Nacos 注册自己的信息,注册信息包括服务名称、IP 地址、端口号、健康状态、元数据等。Nacos 支持基于 HTTP、gRPC 等协议的服务注册,可以支持多种微服务框架,如 Spring Cloud 和 Dubbo。

心跳检测与健康检查

心跳检测是 Nacos 中服务发现与注册的重要机制。每个服务实例在注册时会启动一个定时任务,定期向 Nacos 发送心跳请求。通过这种方式,Nacos 可以实时掌握各个服务实例的健康状态。

  • 健康检查的工作原理
    • 服务实例通过向 Nacos 发送心跳请求,表示自己是活跃的。
    • 如果某个服务实例在规定的时间内未发送心跳请求,Nacos 会认为该实例已经不可用,并将其标记为不可用。
    • Nacos 可以根据用户配置的健康检查方式(如 HTTP 检查、TCP 检查等)来进行定期的健康检测。
  • 健康检查的类型
    • 服务实例健康检查:通过心跳机制或指定的健康检查 API 来判断服务实例的可用性。
    • 负载均衡与路由:Nacos 会根据服务实例的健康状态来路由请求,保证请求不会被发送到不可用的服务实例。
  • 服务实例下线:当 Nacos 发现某个服务实例不可用时,会立即从注册列表中将其移除,避免服务请求被路由到不健康的实例。

服务发现与客户端 SDK

Nacos 提供了多种客户端 SDK,支持不同语言的服务注册与发现。客户端 SDK 会定期从 Nacos 查询服务实例的最新状态,并进行负载均衡,保证高可用和容错。

  • Java 客户端 SDK:通过 NacosDiscoveryClient 实现服务的注册与发现。
  • 其他语言的客户端 SDK:包括 Go、Python、PHP 等语言的 SDK,支持跨语言的微服务发现。

Nacos 高可用与容错机制

高可用架构设计

Nacos 提供了高可用部署方案,支持多节点集群部署。在高可用模式下,Nacos 会将服务实例和配置存储在共享的数据库(如 MySQL 或 Redis)中,确保数据的一致性。

  • 多节点部署:通过配置多个 Nacos 实例,保证系统的高可用性。在一个实例宕机的情况下,其他实例可以继续提供服务。
  • 数据同步:Nacos 在集群模式下,所有实例共享同一份数据(服务实例信息、配置文件等),并通过一致性协议保证数据同步。
  • 负载均衡:Nacos 支持负载均衡,将请求分配到不同的实例,提高系统的吞吐量。

Nacos 安全管理

用户认证与权限控制

Nacos 提供了用户认证和权限管理功能,可以控制谁能访问 Nacos 的管理控制台、配置文件和服务信息。

  • LDAP 集成:Nacos 支持集成 LDAP,保证只有经过认证的用户才能访问控制台和 API。
  • 访问控制列表(ACL):Nacos 允许配置权限控制列表,限制不同角色用户对服务和配置的访问权限。

安全加固

Nacos 还提供了访问控制、数据加密等安全措施,确保服务的安全性。


低版本与高版本 Nacos 的区别

随着 Nacos 的不断发展,低版本与高版本之间有了一些显著的变化:

  1. 功能增强:高版本 Nacos 增强了对多种协议的支持,增加了更多的配置管理功能,如灰度发布、配置加密等。
  2. 性能优化:高版本在性能和扩展性方面进行了优化,能够处理更多的并发请求和大规模的微服务实例。
  3. API 改进:高版本对 Nacos 的 API 进行了改进和优化,增加了更多的功能接口和更丰富的文档支持。
  4. 容错与高可用性增强:高版本提供了更强的容错能力,支持更多的数据库和缓存后端,以确保服务的高可用性。

总结

Nacos 是一个功能强大、易于扩展的服务发现与配置管理平台,广泛应用于微服务架构、云原生应用以及容器化环境中。它通过提供动态服务发现、配置管理、健康检查等功能,帮助开发者简化了微服务架构的部署和管理工作。随着版本的更新,Nacos 在功能、性能和安全性方面不断改进,已经成为微服务架构中不可或缺的基础组件之一。


http://www.ppmy.cn/ops/154318.html

相关文章

记录 | 基于Docker Desktop的MaxKB安装

目录 前言一、MaxKBStep 1Step2 二、运行MaxKB更新时间 前言 参考文章&#xff1a;如何利用智谱全模态免费模型&#xff0c;生成大家都喜欢的图、文、视并茂的文章&#xff01; MaxKB的Github下载地址 参考视频&#xff1a;【2025最新MaxKB教程】10分钟学会一键部署本地私人专属…

一文讲解CMS收集器的垃圾收集过程

CMS就是Concurrent Mark Sweep CMS使用标记-清除算法进行垃圾收集&#xff0c;分为4大步&#xff1a; 初始标记&#xff1a;标记所有从GC Roots直接可达的对象&#xff0c;这个阶段需要STW&#xff0c;但速度很快并发标记&#xff1a;从初始标记的对象出发&#xff0c;遍历所…

网易前端开发面试题200道及参考答案 (下)

阐述如何实现 img 按照原比例最大化放置在 div 中? 要让 img 按照原比例最大化放置在 div 中,可通过以下几种方式实现: 使用 object - fit 属性 object - fit 是 CSS 中用于规定如何调整替换元素(如 <img>、<video>)的内容以适应其容器的属性。 object - fit…

用深度学习优化供应链管理:让算法成为商业决策的引擎

用深度学习优化供应链管理&#xff1a;让算法成为商业决策的引擎 引言 供应链管理一直是商业运营中至关重要的部分。从库存管理到运输调度&#xff0c;从需求预测到供应商选择&#xff0c;任何一个环节的失误都可能导致成本增加甚至业务中断。然而&#xff0c;随着数据的爆炸…

572. 另一棵树的子树

前导题&#xff1a;100. 相同的树 回顾一下 判断两棵二叉树相同&#xff0c;根结点相同 且 左子树相同 且 右子树相同。 于是判断如下&#xff1a; 根结点都为null&#xff0c;返回true根结点不都为null&#xff0c;返回false根结点都不为null&#xff0c;但是值不相同&#…

IDEA 中 Maven 依赖变灰并带斜线的解决方法及原理分析

目录 前言1. 直奔主题2. 原理分析 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 这部分知识点比较好操作&#xff0c;对应放在运维专栏上了&#xff01; 1. 直奔主题 在使用 IntelliJ IDEA 构建 Maven 项目…

Redis存储③Redis基本命令+内部编号和架构

目录 1. Redis 命令行客户端 1.1 与 Redis 服务器交互 1.2 set 和 get 命令 2. 基本全局命令 2.1 keys 2.2 exists 2.3 del 2.4 expire 2.5 ttl 2.6 type 3. 数据结构和内部编码 4. 单线程架构 本篇完。 1. Redis 命令行客户端 1.1 与 Redis 服务器交互 根据上篇…

【PyQt5】数据库连接失败: Driver not loaded Driver not loaded

报错内容如下&#xff1a; 可以看到目前所支持的数据库驱动仅有[‘QSQLITE’, ‘QMARIADB’, ‘QODBC’, ‘QODBC3’, ‘QPSQL’, ‘QPSQL7’] 我在网上查找半天解决方法未果&#xff0c;其中有一篇看评论反馈是可以使用的&#xff0c;但是PyQt5的版本有点低&#xff0c;5.12…