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

Nacos:微服务架构的核心引擎

什么是 Nacos?

Nacos是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台,它同时具备注册中心和配置中心的功能。作为微服务架构中的核心组件,Nacos在服务治理方面提供了完整的解决方案。

Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网

Nacos 的关键特性

1、服务发现和服务健康监测

Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。

Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。

2、动态配置服务

动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。

动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。

配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。

3、动态 DNS 服务

动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。

Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP:PORT 列表.

4、服务及其元数据管理

Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。

Nacos 生态图

Nacos的工作原理

Nacos工作原理主要涉及以下几个关键步骤:

  1. 服务注册:当一个服务启动时,它会向Nacos服务器注册自身的信息(例如IP地址、端口号等)。
  2. 服务发现:当一个服务需要调用另一个服务时,会通过客户端向Nacos服务器请求目标服务的实例信息,Nacos服务器会返回目标服务的实例列表(包括服务的IP地址、端口号、健康状态和其他元数据等)。
  3. 配置下发:Nacos服务器存储服务的配置信息。当配置信息需要更新时,Nacos服务器会推送更新的通知给相关的服务实例,客户端可以实时拉取最新的配置信息,并在应用中生效。
  4. 健康检查:Nacos定期对注册的服务实例进行健康状况检查。当服务实例出现故障时,Nacos服务器会将其标记为不可用,并从服务注册表中自动移除不可用的服务实例。

Nacos的优势

Nacos的优势主要包括:

  • 易用性:简洁的API设计使得集成非常方便,还提供了用户友好的界面和丰富的API接口,使得管理和监控配置及服务实例变得更加直观。
  • 高性能:Nacos在设计上考虑了高性能和高可用性,支持集群部署和水平扩展,能够根据业务需求增加或减少服务器节点、处理大规模的服务发现请求,还具备高吞吐量和低延迟的特点。
  • 兼容性:支持多种语言和服务框架,如Spring Cloud、Dubbo等。
  • 灵活性:可以通过插件机制来扩展其功能,满足特定需求。例如通过插件支持多种数据库类型和对配置数据进行加解密等。
  • 安全性:支持多租户隔离,可以针对不同的环境和团队创建不同的命名空间;支持基于角色的访问控制(RBAC),确保数据的安全性。

Nacos安装

Nacos Server 下载 | Nacos 官网

https://github.com/alibaba/nacos/releases?spm=5238cd80.597e88a2.0.0.3deb32cbIIWzXp

1、下载Nacos安装包

2、解压

tar -xvf nacos-server-2.5.1.tar.gz

3、创建数据库

CREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

初始化数据库,运行nacos/conf/mysql-schema.sql文件或直接运行下面SQL。

mysql-schema.sql

4、配置Nacos

cd nacos/conf
# 修改配置文件
vim application.properties# 配置数据源为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=123456
------------------------------
rGlQQqFCz9ojT+8dAByHe+OLu1RKWUzVJspiMcWoAz0=# 开启鉴权
nacos.core.auth.enabled=true
# 设置秘钥
nacos.core.auth.server.identity.key=rGlQQqFCz9ojT+8dAByHe+OLu1RKWUzVJspiMcWoAz0=
nacos.core.auth.server.identity.value=rGlQQqFCz9ojT+8dAByHe+OLu1RKWUzVJspiMcWoAz0=
nacos.core.auth.plugin.nacos.token.secret.key=Rm9xt+w4p3LWqIPPDhumcqCf5rGIZRMFviBbQ9Vq0Vo=

5、启动Nacos

cd nacos/bin
# 启动
sh startup.sh -m standalone
# 关闭
sh shutdown.sh

6、访问nacos 【http://192.168.142.130:8848/nacos】

默认用户名:nacos 密码:nacos

Nacos配置中心概念

1.1 配置(Configuration)

配置是指系统中可变的参数或开关,Nacos中一个配置主要包含以下要素:

  • Data ID:配置的唯一标识
  • Group:配置分组,默认为DEFAULT_GROUP
  • 内容:配置的具体内容(通常是键值对、JSON、XML、YAML等格式)
  • 类型:配置内容的格式(如properties、yaml、json等)

1.2 命名空间(Namespace)

用于进行租户粒度的配置隔离,不同命名空间下的配置相互隔离。典型应用场景:

  • 环境隔离:开发、测试、生产环境使用不同的命名空间
  • 租户隔离:不同业务或团队使用不同的命名空间

1.3 配置分组(Group)

对配置集进行分组,不同分组的配置可以具有相同的Data ID。典型应用场景:

  • 区分不同应用:同一个环境的不同应用使用不同的分组
  • 区分不同模块:同一应用的不同模块使用不同的分组

Nacos配置案例

配置命令空间(dev、test、pre、pro)

配置分组以及Data ID

命令规范:

  • Data ID格式:{应用名}-{配置类型}.{后缀}
  • Group格式:{应用名}

http://www.dtcms.com/a/288435.html

相关文章:

  • xss-dom漏洞
  • Python 数据分析模板在工程实践中的问题诊断与系统性解决方案
  • 2025在线教育系统源码、平台开发新趋势:开源架构+AI赋能
  • FPGA自学——整体设计思路
  • MySQL练习3
  • 轻松上手:从零开始启动第一个 Solana 测试节点
  • 小架构step系列19:请求和响应
  • Redis字符串操作指南:从入门到实战应用
  • 81、【OS】【Nuttx】【启动】caller-saved 和 callee-saved 示例:压栈内容
  • MC0462最后一难
  • Redis进阶--集群
  • C study notes[1]
  • LVS技术知识详解(知识点+相关实验部署)
  • simulink系列之模型接口表生成及自动连线脚本
  • 消息队列:数字化通信的高效纽带
  • SQL Server和PostgreSQL填充因子
  • HCIA综合实验
  • string【下】- 内功修炼(搓底层)
  • C++入门--lesson4
  • CCF编程能力等级认证GESP—C++6级—20250628
  • ICT测试原理之--什么是假短
  • 基于opencv的人脸识别考勤系统
  • 人工智能与心理史学:从阿西莫夫的科幻预言到可计算社会模型>
  • Chris Fraser | 中国早期思想中墨家与荀子的知识论
  • 【完整代码】融合时序轨迹与49维特征反演的双色球开奖预测模型:一项关于隐藏规律的探索
  • Maven常用知识总结
  • Docker容器原理和启动策略
  • 传统浏览器过时了?Dia如何用AI重新定义上网体验
  • 零基础学习性能测试第二章-linux服务器监控:内存监控
  • 【60】MFC入门到精通——运行后 button按键上不显示 按键名, 控件上的文字不显示