Nacos 3.0 重磅发布,太震撼了!
<p>大家好,我是R哥。</p><p>Nacos 3.0.0 前几天正式发布了,这是一个非常重大的版本,支持许多新功能。<strong>史诗级更新!强的离谱!!</strong></p>
<p><img src="https://img2024.cnblogs.com/other/1218593/202504/1218593-20250429181427419-1106665613.png"></p>
<blockquote>
<p><strong>Nacos 先扫个盲:</strong></p>
<p>Nacos 一个用于构建云原生应用的动态服务发现、配置管理和服务管理平台,由阿里巴巴开源,致力于发现、配置和管理微服务。</p>
<p>说白了,<strong>Nacos 就是充当微服务中的的注册中心和配置中心。</strong></p>
</blockquote>
<h2 id="nacos-300-十大更新">Nacos 3.0.0 十大更新</h2>
<h3 id="1依赖环境升级">1、依赖环境升级</h3>
<p>大家都知道,<strong>Spring Boot 2.x 已经停止维护更新了</strong>,如果 Nacos 还继续使用 2.x 就可会产生越来越多的安全漏洞,这将间接降低 Nacos 的安全性。</p>
<p>所以,Nacos 3.0.0 正式对 <strong>Spring Boot 和 JDK</strong> 版本大刀阔斧,将 <strong>Spring Boot 升级到 3.4.1</strong>,并将 JDK 版本升级到 <strong>17</strong>,正式宣布了 JDK 8 的退役。</p>
<p>这一升级不仅能修复安全漏洞,提升 Nacos 的安全性,另外,<strong>Spring Boot 3.x 支持了 Java 原生启动</strong>,所以还能利用 Java 原生启动功能来提升性能。</p>
<blockquote>
<p>推荐阅读:Spring Boot 2 正式停止维护。。再见了,Java 8! !</p>
</blockquote>
<h3 id="2api-分类更精细化">2、API 分类更精细化</h3>
<p>在 Nacos 3.0 版本之前,API 主要分为两大类:</p>
<ul>
<li><strong>OpenAPI</strong>:主要面向客户端和应用程序;</li>
<li><strong>AdminAPI</strong>:主要提供给运维人员管理和使用的。</li>
</ul>
<p>不过,在实际应用中,这种按照两大类划分 API 的方式问题不少。</p>
<p>比如,<strong>有些 API 无法被准确地开放和描述出来</strong>;再比如,<strong>不同 API 对安全认证的要求千差万别</strong>,简单粗暴地分成两类,根本无法覆盖各种复杂的安全需求。</p>
<p>所以,为了更好地解决这些问题,Nacos 3.0 对 API 做了更细致的划分,由以前的 2 大类分成了现在的 4 大类,如图所示:</p>
<p><img src="https://img2024.cnblogs.com/other/1218593/202504/1218593-20250429181427996-578330236.png"></p>
<p>Nacos 3.0.0 中的最新 API 分类:</p>
<ul>
<li><strong>OpenAPI</strong>:主要面向客户端和应用程序;</li>
<li><strong>AdminAPI</strong>:主要提供给运维人员管理和使用的;</li>
<li><strong>ConsoleAPI</strong>:主要服务于控制台界面;</li>
<li><strong>InnerAPI</strong>:主要用于引擎节点之间内部通信。</li>
</ul>
<p>这种灵活的设计,可以使 Nacos 能够更好地满足不同用户和场景的需求,不光让不同场景下的数据访问更清晰,还为后续针对不同 API 类型实施对应的安全认证打下了坚实基础。</p>
<p>另外,在 Nacos 3.0 版本中,<strong>Nacos 控制台 UI 使用了新的 v3 控制台 API 替换旧的 v1 API</strong>,并且<strong>默认禁用</strong>旧的 v1 API 使用的旧控制台 UI。</p>
<h3 id="3全新的-admin-api">3、全新的 Admin API</h3>
<p>AdminAPI 主要面向运维人员使用,专注于 Nacos 集群的维护操作。但 Nacos 早期设计的 AdminAPI <strong>比较随意</strong>,设计场景也主要以<strong>本地调用</strong>为主,安全性和标准化程度都是个问题。</p>
<p>Nacos 3.0.0 对 AdminAPI 进行了重新设计:</p>
<p><img src="https://img2024.cnblogs.com/other/1218593/202504/1218593-20250429181428351-1161829526.png"></p>
<p>这次重新设计主要体现在以下 3 个方面:</p>
<ul>
<li>对 API 的请求体、返回体和错误码等进行了标准规范;</li>
<li>默认启用并优化 AdminAPI 的身份验证,确保了安全性;</li>
<li>提供了 Maintainer-SDK,支持开发自定义管理程序。</li>
</ul>
<h3 id="4按-api-类型默认启用安全认证">4、按 API 类型默认启用安全认证</h3>
<p>在 Nacos 3.0 版本之前存在以下两个问题:</p>
<ul>
<li>所有的 API 都共用一套安全认证机制,但这种一刀切的做法,对于像 <strong>InnerAPI</strong> 和 <strong>AdminAPI</strong> 这种主要用在<strong>内部调用的接口</strong>来说并不合适。</li>
<li>所有的 API 安全认证依赖统一的开关,会导致在客户端和应用程序完成身份配置之前,没办法直接启用安全认证,增加了系统的安全隐患。</li>
</ul>
<p>针对这些问题,Nacos 3.0 对安全认证进行了优化:</p>
<p><img src="https://img2024.cnblogs.com/other/1218593/202504/1218593-20250429181428741-815658948.png"></p>
<p>说白了,说是对<strong>不同类型的 API 默认采用不同的安全认证策略</strong>:</p>
<ul>
<li>InnerAPI 和 AdminAPI 默认通过 <strong>ServerIdentity</strong> 来做身份校验;</li>
<li>ConsoleAPI 默认启用基于<strong>用户名密码</strong>的身份认证和权限控制;</li>
<li>OpenAPI 则继续沿用 Nacos 2.0 的做法,默认不开启认证,需要用户根据需求手动配置开启。</li>
</ul>
<p>通过这种更细致的设计,不仅提高了 Nacos 集群的数据安全性,也兼顾了可信环境下的使用便捷性,还保证了从未启用到启用安全认证过程中的平滑过渡。</p>
<h3 id="5优化默认命名空间">5、优化默认命名空间</h3>
<p>在 Nacos 中,命名空间 ID 是每个命名空间的唯一标识符。</p>
<p>不过,很多人在用默认的 "<strong>public</strong>" 命名空间时,常常搞错,<strong>把 "public" 这个名字直接当成了 ID 配置到应用里</strong>,而它的真正的 ID 是 <strong>"" 空字符串</strong>,这样就会出现混乱和错误问题。</p>
<p>所以,为了解决这个问题,Nacos 3.0 对默认命名空间的ID进行调整,将默认命名空间的 ID 也修改为 "<strong>public</strong>",和名称保持一致。</p>
<p>如图所示:</p>
<p><img src="https://img2024.cnblogs.com/other/1218593/202504/1218593-20250429181429145-316406356.png"></p>
<p>同进,Nacos 3.0.0 这项改动也能<strong>兼容旧客户端</strong>的访问请求,如果访问 API 时<strong>未传入命名空间 ID 或空字符串</strong>,Nacos 会自动将其匹配为 "<strong>public</strong>" 值进行处理。</p>
<h3 id="6支持先进的-xds-协议">6、支持先进的 xDS 协议</h3>
<blockquote>
<p>xDS 是一套由 Envoy proxy 团队提出的动态服务发现和配置标准协议,支持服务注册、路由、负载均衡等配置的统一管理,广泛应用于云原生和微服务系统中。</p>
</blockquote>
<p>在 Nacos 2.0 时代,<strong>服务数据的获取是通过接入 Istio 的 MCP 协议来实现的,拿到数据后再转换成 xDS 协议格式</strong>。这种方式虽然可行,但中间还得依赖 <strong>Istio</strong> 这个组件,结果不仅让整体架构变得更复杂,在稳定性方面也有隐患。</p>
<p>Nacos 3.0 版本开始,<strong>直接原生支持 xDS 协议中的 EDS、LDS、RDS、CDS 协议</strong>,省去了对 <strong>Istio</strong> 的依赖,系统变得更简洁,部署起来也更轻松,整体的稳定性和易用性都得到了明显提升。</p>
<h3 id="7server-及-console-拆分部署">7、Server 及 Console 拆分部署</h3>
<p>在 Nacos 3.0.0 版本之前,Server 及 Console 是一起部署的,只要部署了 Nacos Server,就能访问 Console 控制台,这样不是很灵活,安全性也彼此互相绑定。</p>
<p>Nacos 3.0.0 实现了<strong>控制台和引擎节点</strong>的灵活拆分部署,如图所示:</p>
<p><img src="https://img2024.cnblogs.com/other/1218593/202504/1218593-20250429181429564-670334762.png"></p>
<p>拆分部署后,它们就能够在不同节点上运行,也能进一步提高安全性。</p>
<p>Nacos 3.0.0 不仅实现了拆分部署,还完成了控制台和引擎的端口拆分,以及新增了 <code>ADMIN API</code>和<code>Console API</code>,允许用户设定独立的访问端口,运维人员能够更灵活地配置网络访问控制列表。</p>
<blockquote>
<p>Spring Cloud Alibaba 中的其他组件,如 <strong>RocketMQ、Sentinel</strong> 的控制台,它们都是单独部署的,这次 Nacos 也终于和它们保持同步了。</p>
</blockquote>
<h3 id="8支持-mcp-协议">8、支持 MCP 协议</h3>
<blockquote>
<p><strong>MCP 扫盲:</strong></p>
<p>MCP 全称为:<strong>Model Context Protocol</strong>,即:<strong>模型上下文协议</strong>,它是一种 AI 开放协议,它标准化了应用向 AI 应用提供上下文的方式。</p>
<p>详细介绍:最近热火朝天的 MCP 是什么鬼?如何使用 MCP?一文给你讲清楚!</p>
</blockquote>
<p>MCP 自推出以来,火爆全网,它的发展速度真是超出了我的想象,今年 2 月份开始,像国外的 <strong>Cursur、Winsurf、Cline、OpenAI</strong> 这些 AI 工具就陆续支持了 MCP 协议,国内也没闲着,比如:百度地图、高德地图也纷纷上线了自家的 MCPServer,MCP 一时成为了AI 界的新宠,炙手可热。</p>
<p>Nacos 也没有落下,在最新的 Nacao 3.0.0 版本中,官方声称 “<strong>0改动</strong>” 适配 MCP Server,如图所示:</p>
<p><img src="https://img2024.cnblogs.com/other/1218593/202504/1218593-20250429181430006-639834784.png"></p>
<p>Nacos 作为 <strong>MCP Registry</strong>,扮演控制面的角色,不仅管理 Tool 的元信息,还可以在<strong>存量接口不改动</strong>的情况下,快速把业务已有的 <strong>API 接口转换成 MCP 协议接口</strong>,结合 Higress AI 网关,实现 MCP 协议和存量协议的转换。</p>
<p><strong>使用 Nacos 管理 MCP 的优势:</strong></p>
<ul>
<li>存量 API 可以快速构建 MCP Server;</li>
<li>MCP 信息动态下发实时生效;</li>
<li>MCP 信息历史版本管理;</li>
<li>MCP 信息灰度管理;</li>
<li>密码配置加密;</li>
<li>MCP 返回格式 JSON 转换 XML;</li>
<li>MCP 服务管理及健康检查;</li>
</ul>
<p>看得出来,现在各大技术框架也都在卷 AI,相信随着 AI 技术的不断发展,Nacos 后面也会推出越来越多 AI 相关的能力,跟上时代。</p>
<blockquote>
<p>更多 MCP 可以参考我写的文章:MCP 系列文章合集</p>
</blockquote>
<h3 id="9支持分布式锁实验性功能">9、支持分布式锁(实验性功能)</h3>
<p>分布式锁在分布式系统里算是个很常见、很基础的功能了,现在市面上,大多数分布式锁主要还是依赖 <strong>Redis、Zookeeper</strong> 这样的组件来实现。</p>
<p>现在随着微服务以及 Nacos 的流行,很多分布式系统<strong>已经用 Nacos 做服务注册和配置管理</strong>了,但 Nacos 一直没有支持分布式锁,大家不得不单独维护一套 Redis、Zookeeper 集群,不仅加重了运维的负担,整体系统的复杂度也跟着上去了。</p>
<p>所以,到了 Nacos 3.0.0 版本,官方决定引入<strong>分布式锁</strong>功能,从而减少系统对额外组件的依赖,从而简化微服务应用架构。</p>
<blockquote>
<p><strong>需要注意的是:</strong></p>
<p>分布式锁功能是在 Nacos 3.0.0 版本中新出的,目前还处于<strong>实验性阶段</strong>,功能生态还未完善,可能存在一定的问题,请谨慎使用。</p>
</blockquote>
<h3 id="10支持模糊订阅实验性功能">10、支持模糊订阅(实验性功能)</h3>
<p>支持<strong>配置和服务的模糊订阅</strong>也是 Nacos 3.0.0 的呼声最高功能之一,本来官方计划在 Nacos 3.1 中支持的,参与开源的同学们积极贡献,<strong>模糊订阅</strong>的功能在 Nacos 3.0.0 版本中提前作为<strong>实验性功能</strong>加入了。</p>
<p>要实现<strong>模糊订阅</strong>,需要通过 <code>fuzzyWatch</code> 接口,可以使用一定的表达式,并对指定分组、服务和配置进行批量订阅,目前可通过 <code>*</code> 进行前缀模糊,后缀模糊,双边模糊匹配。</p>
<blockquote>
<p><strong>需要注意的是:</strong></p>
<p>1、模糊订阅功能仅会<strong>推送服务、配置</strong>的新增以及删除事件,并不会直接推送服务下实例列表,可在服务模糊订阅的监听器中结合 <code>subscribe</code> 接口实现服务下实例列表的变更监听。</p>
<p>2、出于稳定性考虑,Nacos 对模糊订阅的规则数量以及单个规则匹配的服务数量有上限保护。</p>
<p>3、模糊订阅功能是在 Nacos 3.0.0 版本中新出的,目前还处于<strong>实验性阶段</strong>,功能生态还未完善,可能存在一定的问题,请谨慎使用。</p>
</blockquote>
<h2 id="总结">总结</h2>
<p>这次 Nacos 3.0.0 的重磅升级,功能真多真强啊。</p>
<p>Nacos 3.0.0 不仅底层环境进行了大幅度升级,比如抛弃了 JDK 8,<strong>拥抱了 JDK 17 和 Spring Boot 3.x</strong>,还从架构设计到安全机制全面优化,比如 <strong>API 分类更精细、安全认证更灵活、默认命名空间更合理</strong>,甚至<strong>控制台都能单独部署</strong>了,这种全方位增强真是少见。</p>
<p>此外,新版本还积极跟进了行业趋势,比如原生支持 <strong>xDS</strong> 协议、<strong>MCP</strong> 协议,新推出的<strong>分布式锁和模糊订阅</strong>等新特性,这些虽然有些还处于实验阶段,但足以看出 Nacos 团队紧跟云原生和 AI 浪潮的决心。</p>
<p>我能明显感受到的是,Nacos 已经<strong>不单单是一个传统意义上的注册中心或者配置中心</strong>了,更是在积极布局<strong>未来分布式系统和 AI 智能应用</strong>场景。</p>
<p>未来已经到来,Nacos 也在悄悄进化,如果你手头的微服务架构还停留在旧版本,想享受更好的<strong>安全性、性能、AI 加持,以及未来扩展能力</strong>,可以考虑升级。</p>
<h2 id="nacos-的崛起">Nacos 的崛起</h2>
<p>现在 Spring Cloud Alibaba 微服务技术非常火啊,但早期的许多 Spring Cloud Netflix 相关组件,比如 Eureka 2.x、Ribbon、Zuul、Hystrix…等这些,它们都早已停止维护更新了,属于老破旧技术了,我劝大家别再浪费时间学这些了。</p>
<p>鉴于 Spring Cloud 各种组件的停止维护,学习 Spring Cloud Alibaba 是目前最正确的姿势:</p>
<ul>
<li>Spring Cloud Alibaba 基于 Spring Cloud 构建,提供了对 Alibaba 组件的封装而已,比如:<strong>Nacos、Sentinel</strong> 等,其最顶层的抽象还是 Spring Cloud,<strong>所以学习 Spring Cloud Alibaba 就是学习 Spring Cloud。</strong></li>
<li><strong>Spring Cloud Alibaba 作为 Spring Cloud 的官方顶级项目</strong>,也是国内最强微服务框架及事实上的标准,没有之一。</li>
</ul>
<p>Spring Cloud Alibaba 最新技术栈如下:</p>
<table>
<thead>
<tr>
<th style="text-align: left">组件</th>
<th style="text-align: left">Spring Cloud Netflix</th>
<th style="text-align: left">Spring Cloud Alibaba</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">注册中心</td>
<td style="text-align: left">Eureka 1.x<br><s>Eureka 2.x</s>(停止维护)</td>
<td style="text-align: left">Nacos</td>
</tr>
<tr>
<td style="text-align: left">配置中心</td>
<td style="text-align: left"><s>Archaius</s>(停止维护)</td>
<td style="text-align: left">Nacos</td>
</tr>
<tr>
<td style="text-align: left">服务容错</td>
<td style="text-align: left"><s>Hystrix</s>(停止维护)</td>
<td style="text-align: left">Sentinel</td>
</tr>
<tr>
<td style="text-align: left">消息队列</td>
<td style="text-align: left">-</td>
<td style="text-align: left">RocketMQ</td>
</tr>
<tr>
<td style="text-align: left">分布式事务</td>
<td style="text-align: left">-</td>
<td style="text-align: left">Seata</td>
</tr>
</tbody>
</table>
<p>可以看到,Nacos 是 Spring Cloud Alibaba 微服务体系中最重要的成员之一,<strong>Nacos 同时扮演了注册中心和配置中心的双重角色</strong>,并且用过 Nacos 的都知道它功能和性能都非常强悍。</p>
<p>如今,Nacos 变得越来越强了,作为 Spring Cloud Alibaba 的主要成员之一,<strong>不管是工作需要,或者是跳槽面试,Nacos 都是必学的</strong>,它已成为了 Java 程序员必备的技术之一,所以,大家有时间还是要多更新一些技能储备。</p>
<p>最后,如果你想系统学习 Spring Cloud Alibaba 微服务,建议报名R哥最新出品的《Spring Cloud Alibaba 微服务课程》,一次付费,后续都提供免费更新,永久学习。</p>
<p>好了,今天的分享就到这里了,后续R哥也会继续关注并分享更多的 Java 技术干货,关注公众号Java技术栈第一时间推送。</p>
<p>参考链接:</p>
<ul>
<li>https://nacos.io/</li>
<li>https://github.com/alibaba/nacos/releases/tag/3.0.0</li>
</ul>
<blockquote>
<p><strong>版权声明:</strong> 本文系公众号 "Java技术栈" 原创,转载、引用本文内容请注明出处,抄袭、洗稿一律投诉侵权,后果自负,并保留追究其法律责任的权利。</p>
</blockquote>
<p><strong>更多文章推荐:</strong></p>
<p>1.Spring Boot 3.x 教程,太全了!</p>
<p>2.3,000+ 道 Java面试题及答案整理(最新版)</p>
<p>3.免费获取 IDEA 激活码的 7 种方式(最新版)</p>
<p>4.Java & DeepSeek & AI 学习资料分享</p>
<p>5.程序员精美简历模板分享</p>
<p>觉得不错,别忘了随手点赞+转发哦!</p>
</div>
<div id="MySignature" role="contentinfo">
<div style="clear: both"></div><br><br>
来源:https://www.cnblogs.com/javastack/p/18854130
頁:
[1]