作者: Nacos Community.
经过 4 个多月的社区贡献,Nacos 23.版本 0 在经历了 2 之后,终于进入了 beta 发布阶段2.在多次安全风险修复后,还有另一个功能更新。
NACOS Antifragility 插件
2.2.在版本 0 添加了 alpha 版本的反脆弱插件后,社区经过多次重构和修改,以提高抽象性和稳定性,最终在版本 2 中发布3.NACOS 的反脆弱性插件在版本 0 中正式发布用于避免 Nacos 集群中大量请求和连接导致的容量问题,可能导致更大规模的故障。
关于默认反脆弱实现插件的使用和自定义反脆弱插件的开发,请参考文档《反脆弱插件》
Nacos 配置变更插件
作为 Nacos 的核心功能,Nacos 配置管理一直受到开发者、运维人员和审计人员的关注,许多运维人员和审计人员都呼吁社区,希望 Nacos 能够提供配置变更审计、变更通知等功能同时,开发者也希望 Nacos 提供一定的格式校验功能,避免在修改配置时出现错误导致应用失败。
由于NACOS配置管理本身并不了解配置内容,且每个用户公司的审计和通知系统也不同,为了能够更广泛地适应每个用户的需求,NACOS在去年的开源暑期制定了配置变更插件的话题,希望以插件的形式满足配置变更过程中的干预。
经过同学和导师的长期努力,该插件在2年取得了成功3.0 版本发布,用户可以开发自定义插件,分别在配置变更前后与公司的审计系统和通知系统对接,在变更前进行更多的验证操作例如,格式验证、配置名称规范化等。 同时,Nacos 社区也提供了默认插件的实现,可以对导入的配置进行配置变更通知和文件名验证有关更多信息,请参阅配置插件
Nacos 请求参数校验
2.3.在版本 0 之前,NACOS 的参数校验逻辑是分散的,通过各种请求的处理方式分别进行校验,更改和维护难度大,而且经常省略参数校验,参数校验规则不明确统一因此,用户经常会因为一些特殊字符而无法达到预期或出现漏洞,甚至导致大量推送,导致带宽满、内存占用过大、应用失败等。
在 23.0 版本,Nacos 明确参数校验规则在服务端实现统一的参数校验逻辑,并增加参数校验层,根据校验规则对客户端向服务器发送的请求进行校验。 用户可以选择开启参数校验功能,之后 Nacos 会校验客户端向服务器发送的请求中的部分参数,以保证参数的合法性,避免因使用不当导致的不满意和性能问题。
有关详细信息,请参阅参数验证规则
NACOS 容量协商
随着NACOS功能和版本的不断增加,客户端与服务器之间的兼容性变得越来越重要。 因此,在去年的开源之夏,NACOS 社区发布了一个项目,通过增加客户端与服务器之间的能力协商机制,当客户端连接到服务器时,让连接方知道对方支持的功能,并在支持相应功能时启用相应的功能。 通过尝试避免增加通信开销。
在 23.版本 0,此功能也集成在 nacos3 中0 支持更多优化函数,提供基础。
其他重要变化
除了上述更改外,nacos23.版本 0 还支持:客户端异常指标、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.[####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 **oid version conflicts.[#10416] upgrade console yaml editor.[#10648] optimize gu**a dependency.[#10893] upgrade spring boot to 2.7.15.[#11199] upgrade grpc version to 1.57.2.
经过暑期的辛勤耕耘,今年的NACOS开源暑期也即将落下帷幕,各项项目进展稳步推进,取得了不小的进展。
开源夏季 OSPP 2023
NACOS 在 2023 年夏季开源,发布了 9 个项目,其中 6 个项目成功与同学匹配并基本完成了项目主题,包括大量社区期待的新功能和优化,后续版本将加入。
入选项目名单:
客户端订阅者合并和数据选择功能为 nacos-spring-boot-starter,支持将 Spring Boot 3Configmap 适配到 Nacos 配置中心、自动同步工具、客户端可观测性指标构建,支持 NACOS 注册中心的模糊订阅能力,实现 XDS 协议的其他部分。
NACOS荣获GLCC 2023编程夏令营优秀社区奖
Nacos 2023 年编程夏令营一个nacos30 中最受欢迎的功能之一是对分布式锁定的支持问题。 目前,在导师和同学们的共同努力下,该功能已经初步完成,有望在nacos3中发布0 在 alpha 版本中在社区中宣布。
感谢导师和同学们的努力,Nacos社区荣获CCF Gitlink开源编程夏令营优秀社区奖感谢主办方Gitlink为社区提供平台和活动。
2.x 后续计划
2024年3月2日起0.目前发布 0 个正式版,2 个X 版本已经消失了将近 2 年,现在是 2 年3.版本 0 发布,大部分功能在插件细化中完成,在接下来的 2 个3.在 X 版本中,将主要修复当前版本的问题,并进行小范围的功能优化。 同时,对于 24.版本 0,将用作 NACOS30、优化重构大量**,提升稳定性和健壮性,提高易用性和可观测性,向nacos3迈进0 版本平稳过渡。
3.0 计划
NACOS 社区也开始引入 NACOS30、Nacos 将从统一控制平面、支持本地化、存算分离等方向进一步演进 Nacos 的功能和架构,欢迎社区积极参与新版本的建设。
Nacos 致力于帮助您发现、配置和管理微服务。 Nacos 提供了一系列简单易用的功能,帮助您快速实现动态服务发现、服务配置、服务元数据和流量管理。
Nacos 帮助您更敏捷、更轻松地构建、交付和管理微服务平台。 NACOS是构建以“服务”为核心的现代应用架构(如微服务范式、云原生范式)的服务基础设施。
最后,欢迎大家加入nacos钉钉社区群(群号:12810027056)。
相关链接:
1] 反脆弱插件。
2] 配置更改插件。
3] 参数验证规则。
4] 开源之夏。
5] 编码夏令营。