Nacos 荣获 GLCC 优秀社区,同时 2.3.0-BETA 发布,欢迎试用

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: 经过 4 个多月社区的大量贡献,Nacos 2.3.0 版本终于进入的 Beta 发布阶段,在经历了 2.2.X 的多个安全风险修复的版本后,又一次迎来了功能性上的更新版本。

作者:Nacos 社区


新版本发布


经过 4 个多月社区的大量贡献,Nacos 2.3.0 版本终于进入的 Beta 发布阶段,在经历了 2.2.X 的多个安全风险修复的版本后,又一次迎来了功能性上的更新版本。


Nacos 反脆弱插件

2.2.0 版本加入 ALPHA 版本的反脆弱插件后,社区经过多次重构和修改,提升抽象度和稳定性,终于在 2.3.0 版本中正式公布了 Nacos 的反脆弱插件,用于避免 Nacos 集群在大量请求和连接时导致的容量问题而引发更大规模的故障。默认反脆弱实现插件的使用以及自定义反脆弱插件的开发可参考文档反脆弱插件[1]


Nacos 配置变更插件
Nacos 配置管理作为 Nacos 的核心功能,一直受到开发人员、运维人员和审计人员的关注,不少运维人员和审计人员向社区提出诉求,希望 Nacos 能够提供配置变更的审计、变更通知等功能;同时开发人员也希望 Nacos 提供一定的格式校验功能,避免修改配置时出现错误导致应用故障。


由于 Nacos 配置管理本身对配置内容是不感知的,且各个用户公司的审计、通知系统也各不相同,因此 Nacos 为了能够更广阔的适配各个用户的诉求,在去年的开源之夏中制定了配置变更插件的课题,希望以插件化的形式,来满足对配置变更过程的介入。


经过同学和导师长期的努力,该插件在 2.3.0 版本发布,用户可以开发自定义插件,在配置变更前和变更完成后,分别对接公司的审计系统和通知系统,并在变更前进行更多的校验操作,如格式校验,配置名字的规范化等。


同时 Nacos 社区也提供了默认插件的实现,可接入 webhook 进行配置变更的通知以及导入配置的文件名校验等;详情可参考文档配置变更插件[2]


Nacos 请求参数校验
2.3.0 版本之前的 Nacos 的参数校验逻辑分散,由各类请求的处理方法单独进行校验,难以更改维护,经常出现参数校验的遗漏,参数校验的规则也没有明确统一;这使得用户使用时经常会因为一些特殊字符导致功能不符合预期或出现漏洞,甚至导致大量推送,导致带宽打满,内存占用过多,导致应用出现故障。


在 2.3.0 版本中,Nacos 明确了参数校验规则,在服务端实现了统一的参数校验逻辑并添加了参数校验层,根据校验规则对客户端向服务端发送的请求进行校验。用户可以选择开启参数校验功能,开启后 Nacos 将会对客户端向服务端发送的请求中的部分参数进行参数校验,确保参数的合法性,避免由于错误使用,导致的不符合预期以及性能问题。


详细情况可参考文档参数校验规则[3]


Nacos 能力协商
随着 Nacos 功能越来越多,版本越来越多,客户端和服务端之间的兼容性愈发重要,如果继续保持尝试性的兼容,只会兼容能力愈发的困难。


因此 Nacos 社区在去年开源之夏中,发布了课题,通过增加客户端和服务端之间的能力协商机制,在客户端连接到服务端时,让连接双方知道对方分别支持的功能,在支持对应功能的情况下,开启对应功能。避免通过尝试而增加通信开销。

在 2.3.0 版本中,该能力也被集成进来,为之后 Nacos3.0 支持更多优化功能提供基础。


其他重要改动除了上述改动,Nacos2.3.0 版本还支持了:客户端异常的 metrics、grpc 长连接的 SSL 功能、关闭开源控制台等功能,更多细节可以查看变更列表,欢迎试用:

## feature
[#5698] Support nacos control plugin.
[#8458] Support ability negotiations between server and clients.
[#8460] Support config change hook plugin.
[#10117] Support metrics for nacos client request server exception.
[#10150] Support SSL for grpc connection.
[#10223] Support auto build instance id when client request instance id is null.
[#10288] Support get more module state and switches in console.
[#10734] Support validate most of request parameters.
[#10774] Support toml format for configuration in console ui.
[#10831] Support batch deregister instances for service.
[#10971] Support disable console ui and support add guide information.
## Enhancement&Refactor
[#6819] Add page size selector in service details page.
[#8107][#9109][#10169][#10176] Enhance hint when console ui session expired for default auth plugin.
[#9085] Add the Reachability Metadata required by native-image.
[#9821] Enhance datasource plugin to make more datasource implementation easier.
[#9881] Enhance configuration page to supports folding when editing configuration.
[#10067] Enhance Windows compatibility for configuration snapshot.
[#10155] Enhance hints for grpc request when request timeout.
[#10343] Use CMS as default GC when jdk less 9.
[#10361] Refactor module switches to make only load specified module but not only close in console ui.
[#10520] Validate for namespace show name when create new namespace.
[#10521] Enhance the hints for `No DataSourceSet` error by validate datasource after construction.
[#10539] Enhance logs when opeation configuration failed.
[#10730] Link to v2 document for console ui.
[#10811] Enhance compatibility for colorful service healthy status in console ui.
[#10891] Support setting maximum number of push retries.
[#10930] Forward compatible old version secretKey for default auth plugin.
[#11129] Remove the namespace information from the node list page.
[#11231] Optimize the handleSpringBinder method in PropertiesUtil.
## BugFix
[#10056] Fix loss revision of client for distro sync.
[#10128] Fix wrong judgement in raft stateMachine.
[#10149] Fix dead lock on sending connection reset request on server over limit.
[#10271] Fix nacos-client failover switch file path.
[#10318] Fix import configuration problem.
[#10347] Fix only admin role user can register service into default namespace when enabled default auth plugin.
[#10406] Fix jraft install leader snapshot error after disconnection.
[#10427] Fix nacos client no response when handle server request with exception.
[#10464] Fix NPE when concurrent operations for client.
[#10470] Fix some missed i18n for console ui.
[#10509] Fix out data connection not be disconnect problem.
[#10548] Fix switch domain might not load snapshot after restart.
[#10556] Fix index loss for client and service in extreme scenarios.
[#10583] Fix some new API loss auth check.
[#10585] Fix selectInstances and selectOneHealthyInstance methods will not subscribe service problem.
[#10593] Fix invalid create `file:` dir under `nacos.home`.
[#10598] Fix nacos-client not random get server address when using address.
[#10606] Fix memory leak for nacos client when user create and shutdown client frequently.
[#10657] Fix NPE when using derby datasource for cluster mode.
[#10935] Fix startsWith judgement wrong when ignoreCase is true.
[#11056] Fix Batch register count size wrong, when batch register sereval time.
[#11059] Fix RPC_CLIENT_TLS_PROTOCOLS setting error.
[#11192] Fix batchRegisterInstance not recalculate revision prblem.
[#11197] Fix frequent do query service when hit protect empty.
## Dependency
[#7698] Remove httpasyncclient version dependency management to avoid version conflicts.
[#10416] Upgrade console yaml editor.
[#10648] Optimize Guava Dependency.
[#10893] Upgrade spring boot to 2.7.15.
[#11199] Upgrade grpc version to 1.57.2.



开源之夏 OSPP 2023

以及编程夏令营 GLCC 2023


经过夏天如火如荼的努力,Nacos 今年的开源之夏也接近尾声,各项目进展稳步推进,均取得了不小的进展。


开源之夏 OSPP 2023

Nacos 在 2023 年度的开源之夏[4]中,发布了 9 个项目,其中 6 个项目成功匹配同学,并基本完成了项目课题,其中不乏大量社区期待的新增功能和优化,将在后续版本中加入。


入选项目列表:

  • 客户端订阅者合并和数据选择功能
  • 为 nacos-spring-boot-starter 支持适配 spring boot 3
  • ConfigMap 到 Nacos 配置中心自动同步工具
  • 客户端可观测性指标建设
  • 支持 Nacos 注册中心的模糊订阅能力
  • 实现其他部分 xDS 协议

感谢导师和同学们的辛苦付出,也感谢主办方中科院软件所提供的优秀平台和活动。


Nacos 荣获编程夏令营 GLCC 2023优秀社区
Nacos 在 2023 年度的编程夏令营[5]申报了一个 Nacos3.0 中呼声较高的一个功能作为课题 -- 支持分布式锁。目前已在导师和同学的共同努力下,初步完成了功能,预计会在 Nacos3.0 的 Alpha 版本中在社区公布。由于导师和同学的努力,Nacos 社区荣获 CCF Gitlink 颁发的开源编程夏令营的优秀社区奖,感谢主办方 Gitlink 为社区提供的平台和活动。


展望


2.X 后续计划

从 2021 年 3 月 2.0.0 正式版发布至今,2.X 版本已经走了接近 2 年时间,如今 2.3.0 版本发布,完成了大部分功能的插件化提炼,在之后的 2.3.X 版本中,会主要对当前版本的问题进行修复,并做出小范围的功能优化。同时对于 2.4.0 版本,会作为一个 Nacos3.0 的过度版本,对大量代码进行优化重构,在提升稳定性、健壮性的同时,提升易用性和可观测性,向 Nacos3.0 版本平稳过度。


3.0 计划

Nacos 社区同时也开启了关于 Nacos3.0的畅想和规划,Nacos 将会从统一控制面、支持国产化、存储计算分离等方向进一步演进 Nacos 的功能和架构,欢迎社区积极参与到新版本的建设中。


About Nacos


Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

最后欢迎大家扫码加入 Nacos 钉钉社区群(群号:12810027056):

相关链接:

[1] 反脆弱插件

https://nacos.io/zh-cn/docs/v2/plugin/control-plugin.html

[2] 配置变更插件

https://nacos.io/zh-cn/docs/v2/plugin/config-change-plugin.html

[3] 参数校验规则

https://nacos.io/zh-cn/docs/v2/guide/user/parameters-check.html

[4] 开源之夏

https://summer-ospp.ac.cn/org/orgdetail/ab188e59-fab8-468f-bc89-bdc2bd8b5e64?lang=zh

[5] 编程夏令营

https://www.gitlink.org.cn/glcc/2023/projects

目录
打赏
0
0
0
0
401
分享
相关文章
《Nacos 架构与原理》| Nacos社区首本电子书免费下载
《Nacos 架构与原理》是 Nacos 电子书系列计划的第一步,并且这部分内容希望和社区共同创作,社区会推动 Nacos 电子书持续更新迭代,也欢迎更多小伙伴能加入 Nacos 社区一起创作。我们把电子书文档通过语雀公开文档像社区开放评论和更新,希望大家针对于内容共同进行校对,并且也欢迎进行投稿,把经验向社区更多个人和企业进行分享。
2454 12
《Nacos 架构与原理》| Nacos社区首本电子书免费下载
Nacos 1.0.1发布,社区一起定义Nacos
Nacos 1.0.1是GA之后的第一个版本,除了修复1.0.0一些bug以外,还在社区反馈的基础上,吸收了大量的社区共建PR。这个版本中除了原有的贡献者外,新增了13名社区的贡献者,总计合入了43个PR。
11133 12
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
822 81
高效搭建Nacos:实现微服务的服务注册与配置中心
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
315 14
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
483 41
Nacos 配置中心变更利器:自定义标签灰度
本文是对 MSE Nacos 应用自定义标签灰度的功能介绍,欢迎大家升级版本进行试用。
691 24
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
92 5
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
69 4
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,实际使用中常遇到“客户端不发送心跳检测”的问题。本文深入探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务正常运行。通过检查客户端配置、网络连接、日志、版本兼容性、心跳策略、注册状态、重启应用和环境变量等步骤,系统地排查和解决这一问题。
89 3

云原生

+关注