Spring Cloud Alibaba 之 Nacos

.
Nacos官方文档:
https://nacos.io/docs/latest/overview/?spm=5238cd80.47ee59c.0.0.770fcd36HoVbU6


1.什么是Nacos

Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台,致力于简化云原生应用的构建与治理,相比其他注册中心Eureka,Consul更加强大。

一句话总结:Nacos = 注册中心 + 配置中心 + 动态 DNS + 服务治理 的综合体。

Nacos Server 必须独立启动,Spring Boot 不会内嵌它,不支持 Spring Boot 直接启动为注册中心,需要单独运行 Nacos Server。


2. 主流注册中心对比(Eureka,Consul,Zookeeper,Nacos)

.
根据CAP原理,将NoSQL数据库分成了满足CA原则,满足CP原则和满足AP原则三大类, CAP理论
指出,一个分布式系统不可能同时满足C (一致性) 、A (可用性) 、P (容错性),由于分区容错性P再分布式系统中是必须要保证的,因此我们只能再A和C之间进行权衡。

CA:单点集群,满足一致性,可用性的系统,通常可扩展性较差
CP:满足一致性,分区容错的系统,通常性能不是特别高
AP:满足可用性,分区容错的系统,通常可能对一致性要求低一些

对比图表:

注册中心CAP模型一致性协议设计侧重点典型适用场景
EurekaAP自定义复制协议高可用性、最终一致性Netflix 生态、Spring Cloud 体系、容忍短暂不一致的云原生环境
ConsulCPRaft强一致性、多数据中心支持金融、政务等强一致需求场景;多数据中心管理
ZookeeperCPZAB(类Paxos)强一致性、顺序一致性分布式协调场景(如Kafka、Hadoop)、分布式锁、选主
Nacos混合模式(AP/CP可切换)Distro(AP)Raft(CP)灵活适配、临时实例AP/持久实例CP全场景覆盖,微服务注册发现与配置中心;动态切换需求

3. Nacos的AP与CP模式

Nacos支持AP和CP两种模式,可以根据具体的使用场景进行选择。默认情况下是AP模式,可以通过修改Nacos的配置文件来切换AP/CP。

  • 在AP模式下,Nacos保证高可用性和可伸缩性,但不保证强一致性。
  • 在CP模式下,Nacos保证强一致性,但可能会降低可用性和可伸缩性。

在实际应用中,具体应该采用哪种模式,需要根据业务的特点和需求来判断。

如果在分布式系统中,某些数据的一致性对业务有非常高的要求,例如金融、支付等场景,那么可以选择使用CP模式。在CP模式下,当发生网络分区或故障时,为了保证数据一致性,Nacos会对服务进行自动隔离和恢复。但是,这会导致部分服务不可用,因此可用性会受到影响。

如果对于某些服务来说,可用性比一致性更加重要,例如网站、在线游戏等场景,那么可以选择使用AP模式。在AP模式下,Nacos会优先保证服务的可用性,如果发生了网络分区或故障,Nacos会在保证一定的可用性的前提下,尽可能保持数据一致性。这样虽然可能会导致数据不一致的情况,但是可以保证服务的可用性,从而减少业务的影响。


4. Nacos核心功能解析:

4.1 服务发现与健康监测

在这里插入图片描述

服务注册:服务启动时向Nacos注册实例信息(IP、端口、元数据),通过REST API或SDK实现。

服务发现:消费者通过服务名查询可用实例列表,支持负载均衡策略(如轮询、权重)。

健康检查

  • 临时实例:客户端主动上报心跳(默认5秒/次),超时15秒标记不健康,30秒剔除。

  • 永久实例:服务端主动探测(HTTP/TCP),适应复杂网络环境。

保护阈值:当健康实例比例低于阈值(如0.5),返回所有实例(含不健康)避免雪崩。


4.2 动态配置管理

配置模型:
在这里插入图片描述

  • Namespace:隔离环境(如dev/test/prod)。

  • Group:分组管理相关配置(如DEFAULT_GROUP)。

  • Data ID:唯一标识配置集(如user-service.yaml)。

  • 动态更新:客户端监听配置变更,秒级生效,无需重启服务。

  • 版本与回滚:支持配置历史版本管理及一键回滚。


4.3. 动态DNS与流量治理

服务路由:将服务名解析为IP列表,支持权重路由和流量分发。

元数据管理:为服务添加标签(如版本、区域),实现灰度发布。


5. 总结

Nacos的核心价值在于统一化治理:通过服务发现、配置管理、流量控制三大能力,解决微服务架构中的动态协调问题。其优势包括:

  • 开箱即用:控制台提供可视化操作,降低运维成本。

  • 高扩展性:插件机制支持与CMDB、监控系统集成。

  • 多场景适配:从传统应用到云原生,支持Kubernetes、Dubbo、Spring Cloud等生态。

生产建议:

  • 集群部署至少3节点,外置MySQL保证数据持久化;

  • 配置保护阈值(建议0.6-0.8)避免流量洪峰击穿实例;

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Car Kit重构车机开发体验,让车载应用开发驶入快车道

在智能座舱成为汽车行业“新四化”核心战场的今天,开发者们正面临这样的挑战:如何让手机应用快速适配车机场景?如何实现手机与车机无感流转?如何在保障驾驶安全的前提下提供沉浸式交互体验? HarmonyOS SDK 车服务&…

ruoyi-flowable-plus Excel 导入数据 Demo

📁 项目结构简述 ruoyi-flowable-plus 是基于 RuoYi 的扩展项目,使用: 后端:Spring Boot MyBatis Flowable前端:Vue.js 📥 Excel 导入功能 Demo 以导入用户数据为例,展示完整导入流程。 …

kafka 日志索引 AbstractIndex

AbstractIndexAbstractIndex 是 Kafka 日志(Log)子系统中一个至关重要的基础类。它为 Kafka 的各种索引文件(如偏移量索引 .index 和时间戳索引 .timeindex)提供了一个统一的、抽象的框架。这个类的设计目标是实现极高的读写性能和…

重学前端008 --- 响应式网页设计 CSS 无障碍 Quiz

文章目录meta 总结html 页面结构img 尺寸子选择器 >a 锚点仅屏幕阅读器可见li 元素的悬停设置小屏幕防止溢出meta 总结 <head><!-- 基础字符编码声明 --><meta charset"UTF-8"><!-- 视口设置&#xff0c;响应式设计必备 --><meta nam…

C# 调用CodeSoft模板打印标签,编辑模板覆盖根目录的文件,不能拷贝

C# 调用CodeSoft模板打印标签&#xff0c;编辑模板覆盖根目录的文件&#xff0c;不能拷贝&#xff0c;报文件已经打开。 原因&#xff1a;C#窗体关闭时&#xff0c;没有关闭LabelManager2.ApplicationClass labApp&#xff0c;别忘记写labApp1.Quit(); if (labApp1 ! null) {la…

Logback简单使用

Logback 日志框架介绍 正如你所知&#xff0c;开发者拥有大量日志工具可供选择。本节中&#xff0c;我们将学习一个非常流行的日志库 —— Logback。它是 Log4j 日志库的继任者&#xff0c;基于相似的理念构建。Logback 在同步和异步日志记录方面都非常快速&#xff0c;并提供了…

Python爬虫实战:研究langid.py库相关技术

一、引言 在当今全球化的网络环境下,互联网上的内容呈现出多语言的特点。对于许多自然语言处理 (NLP) 任务,如文本分类、情感分析和信息检索,准确识别文本的语言是首要步骤。网络爬虫作为获取互联网内容的重要工具,结合语言识别技术,可以为多语言信息处理提供丰富的数据来…

打车代驾 app 派单接单系统模块搭建

一、逻辑分析打车代驾 APP 的派单接单系统模块是整个应用的核心部分&#xff0c;它需要高效、准确地处理订单分配和司机接单流程&#xff0c;以确保用户能够快速得到服务&#xff0c;司机能够合理地接到订单。用户端下单逻辑&#xff1a;用户打开 APP&#xff0c;输入出发地、目…

Java Stream API性能优化:原理深度解析与实战指南

Java Stream API性能优化&#xff1a;原理深度解析与实战指南 技术背景与应用场景 随着大数据量处理和高并发场景的普及&#xff0c;传统的集合遍历方式在代码可读性和性能上逐渐显现瓶颈。Java 8引入的Stream API&#xff0c;通过声明式的流式编程极大提升了开发效率和可读性&…

Nginx配置proxy protocol代理获取真实ip

Nginx配置proxy protocol 文章目录Nginx配置proxy protocol前言一、PROXY Protocol协议二、配置方法代理服务器配置http模块代理​​Stream 模块​代理测试配置是否生效端口检查测试ip记录验证http验证tcp注意事项和理解误区应用程序机器配置总结前言 在现代开发中有很多场景需…

什么是商业智能BI数据分析的指标爆炸?

指标爆炸这个词大家可能都是第一次听说&#xff0c;指标怎么会爆炸呢&#xff1f;其实这个是我们很多年前在一些商业智能BI项目上总结出来的一种场景或者现象&#xff0c;就是过于的开放给业务人员在BI自助分析过程中创造了很多衍生性的分析指标&#xff0c;结果就造成了前端指…

Spring AI 系列之十八 - ChatModel

之前做个几个大模型的应用&#xff0c;都是使用Python语言&#xff0c;后来有一个项目使用了Java&#xff0c;并使用了Spring AI框架。随着Spring AI不断地完善&#xff0c;最近它发布了1.0正式版&#xff0c;意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说…

Linux学习之Linux系统权限

在上一篇的内容中我们学习到了Linux系统命令相关的知识及其相关的扩展内容&#xff0c;本期我们将学习Linux基础的另一个重要部分&#xff1a;Linux系统权限管理 作者的个人gitee&#xff1a;楼田莉子 (riko-lou-tian) - Gitee.com 目录 权限概念及必要性 什么是权限 为什么要…

Web3.0 能为你带来哪些实质性的 改变与突破

如今各种大厂裁员消息层出不穷&#xff0c;今年又添飞书、剪映、微软、思科... 这有一张网友整理的去年互联网大厂裁员裁员信息表&#xff1a; 目前国内很多大厂都在裁员&#xff0c;非常现实、且越来越多 35 技术人&#xff0c;正在面临这样的问题&#xff0c;那么Web3.0 确实…

doker centos7安装1

1.什么是doker Docker 是一个开源的应用容器引擎&#xff0c;它允许开发者将应用程序及其依赖项打包到一个可移植的容器中&#xff0c;然后发布到任何支持 Docker 的操作系统上&#xff0c;实现 “一次构建&#xff0c;到处运行”。 容器是一种轻量级的虚拟化技术&#xff0c…

自动化面试题

1、什么是测试套件测试套件是多个测试用例的集合。2、搭建接口自动化框架中&#xff0c;你遇到最大的难点是什么&#xff0c;以及怎么解决的?测试数据动态管理难点:接口依赖动态参数(如Token、订单ID)&#xff0c;数据无法硬编码.解决方案:使用关联提取(如正则提取响应中的Tok…

【Linux】LVS(Linux virual server)环境搭建

一、LVS的运行原理1.1 LVS简介LVS:Linux Virtual Server&#xff0c;负载调度器&#xff0c;内核集成&#xff0c;章文嵩&#xff0c;阿里的四层SLB(Server LoadBalance)是基于LVSkeepalived实现LVS 官网: http://www.linuxvirtualserver.org/ LVS 相关术语 VS: Virtual Server…

算法竞赛备赛——【图论】求最短路径——Dijkstra

Dijkstra 用来计算从一个点到其他所有点的最短路径的算法&#xff0c;是一种单源最短路径算法。也就是说&#xff0c;只能计算起点只有一个的情况。Dijkstra的时间复杂度是O (|v|^2)&#xff0c;它不能处理存在负边权的情况。 邻接矩阵存图 #include<iostream> using …

影刀 RPA:批量修改 Word 文档格式,高效便捷省时省力

在日常办公和文档处理中&#xff0c;Word 文档格式的统一和规范是许多企业和个人用户的重要需求。无论是撰写报告、制作提案&#xff0c;还是整理资料&#xff0c;都需要确保文档格式的一致性。然而&#xff0c;手动修改多个 Word 文档的格式不仅耗时费力&#xff0c;还容易因疏…

GitLab 社区版 10.8.4 安装、汉化与使用教程

一、GitLab 安装 GitLab 提供了集成所需软件的 RPM 包&#xff0c;简化了安装流程。我们选择安装社区版&#xff08;CE&#xff09;10.8.4&#xff0c;可通过官方网站或国内镜像源&#xff08;如清华镜像&#xff09;获取安装包。 1. 准备工作 首先创建工具目录并进入&#…