首页 > 其他分享 >Star 3w+,向更安全、更泛化、更云原生的 Nacos3.0 演进

Star 3w+,向更安全、更泛化、更云原生的 Nacos3.0 演进

时间:2024-09-29 17:23:38浏览次数:8  
标签:社区 Star 泛化 插件 3w nacos Nacos 版本 SDK

作者:席翁

Nacos 社区刚刚迎来了 Star 突破 30000 的里程碑,从此迈上了一个新的阶段。感谢大家的一路支持、信任和帮助!

Nacos /nɑ:kəʊs/是 Dynamic Naming and Configuration Service 的首字母简称,定位于一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。从 2018 年 7 月开始宣布开源以来,已经走过了第六个年头,在这六年里,备受广大开源用户欢迎,收获许多社区大奖。Nacos 在社区共同的建设下不断成长,逐步的开始帮助用户解决实际问题,助力企业数字化转型,目前已经广泛的使用在国内的公司中,根据微服务领域调查问卷,Nacos 在注册配置中心领域已经成为国内首选,占有 50%+ 国内市场份额,被各行各业的头部企业广泛使用!

Nacos 社区想借此良辰,回顾一下近两年社区的发展,以及简单进行一下未来的展望和演进的规划。

社区回顾

1.1 从 2.0 到 2.4 的版本演进

在过去的两年左右时间,Nacos 从 2.0.4 版本演进到了 2.4.2 版本,2.X 版本从最初的解决 1.X 的性能问题逐渐成熟,基本完成了当初构想的高性能、易拓展的目标,并且对产品的易用性和安全性进行了提升。

1.1.1 插件化能力

在 2.0.X 版本中,Nacos-Client 和 Nacos-Server 经过对部分 gRPC 使用问题的修复,解决了 1.X 架构所带来的性能瓶颈,同时实现了稳定的生产环境运行。Nacos 社区开始致力于插件化改造,支持用户灵活实现和定制插件。用户可以根据自身业务需求,通过实现相关的 SPI 接口和引入 jar 包,轻松实现自定义的鉴权、加解密和多数据源等附加功能。插件化的升级使 Nacos 能够充分实现核心功能与多种附加功能的解耦,从而显著增强了可扩展性。

在过去两年的社区发展中,Nacos 推出了多个插件 [ 1] ,包括鉴权、配置加解密、数据源、变更轨迹、限流以及配置变更 Hook 等。特别值得一提的是数据源插件,许多插件实现得到了社区的广泛贡献,并且还有众多公司、团队以及个人根据需求定制适配各类数据源,以满足其业务和部署的需求。

1.1.2 安全和易用提升

在 Nacos 的 2.0 到 2.4 版本之间,对默认鉴权插件进行了重要的重构和改进。新版本移除了以往版本中与安全相关的默认值,包括 token、身份相关的 key-value 和管理员密码等。使用鉴权功能时,系统会提供必要的校验和明确的错误提示,以避免因使用默认值而产生的安全风险。此外,Nacos 也调整了控制台的登录页面,使其能够与鉴权功能的启用状态同步,防止造成误导。对于未开启鉴权功能的集群,Nacos 控制台会显眼地提示用户,并推荐启用鉴权。

除了对默认鉴权的改进和提示,Nacos 还新增了全链路 TLS 功能。这涵盖了客户端与服务端之间的 TLS 通信,以及服务端之间的 TLS 通信,确保数据传输的安全性和加密性。

在易用性方面,Nacos 在 2.0 到 2.4 版本中也做出了显著的改进。例如,新增支持批量注册服务,以满足代理注册和网关等应用场景,并引入了服务订阅的增量通知机制,避免用户需要自己保存和比对服务实例的历史状态;支持 Prometheus SD 协议,可以方便地将注册到 Nacos 上的微服务,通过 SD 协议通知 Prometheus 进行监控数据的采集。

这些功能的提升和改进,进一步增强了 Nacos 的安全性和用户体验。

1.2 新的官网

“相信一切都是服务,每个服务节点被构想为一个星球,每个服务都是一个星系。Nacos 致力于帮助建立这些服务之间的连接,助力每个面向星辰的梦想能够透过云层,飞在云上,更好的链接整片星空。”

Nacos 官网 https://nacos.io/  是开源产品 Nacos 的官方平台,年均吸引百万级独立访客,受到了广大开发者的关注。在此期间,官网进行了一次较大幅度的更新,主要围绕提升用户体验,着重关注开发者的核心需求。

1.2.1 解决 Nacos 下载和文档版本混乱问题

首先,为了解决开发者在 GitHub 下载时遇到的速度慢的问题,我们增强了 Nacos 的官方下载渠道。

在文档结构方面,我们进行了优化,新版本的文档将按照不同版本进行拆分,以避免之前出现的文档与新版本特性不一致的问题。同时,用户可以直接访问预览版文档,从而提升文档的更新效率。

1.2.2 电子书在线预览和博客文章分类

升级后的新官网也新增了《Nacos 架构与原理》电子书的预览版本,便于用户在线查阅。帮助用户快速理解 Nacos 的架构与原理,更好的使用 Nacos。

另外对之前的博客文章进行了分类展示,有技术含量较高的技术博客、有社区的新闻和活动等等,帮助官网访问者快速找到自己感兴趣的内容进行阅读。

1.2.3 使用大模型进行专家答疑

最后,升级后的新官网引入了通义大模型,针对社区中常见问题进行了训练,在官网中提供了专家答疑功能。社区用户可以就微服务和 Nacos 相关问题进行咨询,借助大模型的搜索和推理能力,为用户提供解决方案。

1.3 多语言和更多生态支持

同时多语言上,Go-SDK 也已经追平 Java-SDK 的功能和稳定性,Python-SDK 也发布了稳定版,并正在积极适配 2.X 版本的新特性,另外社区中也有很多优秀的生态组建。

1.3.1 Nacos-Go-SDK

随着 Nacos 2.X 的稳定,Nacos 的 go-sdk [ 2] 率先开始进行 Nacos 2.X 的适配工作并于 2022 年 2 月发布第一个适配 Nacos 2.X 的版本 2.0.0,随着 2 年左右的演进,目前 Nacos 的 go-sdk 在功能和特性上已经追平了 Nacos 的 Java-sdk,并且在稳定性上也不逊色于 Java-sdk,许多以 Go 语言为主的头部企业已经大规模使用新版本的 Go-sdk。

1.3.2 Nacos-Python-SDK 和 Nacos-Rust-SDK

随着 AI 大模型技术的火爆, 越来越多的 Python 应用和 AI 应用希望使用 Nacos 的注册&配置管理能力,来进行服务的发现、配置的动态变更以及 prompt 的动态发布等,Nacos 社区的 Python-SDK [ 3] 活跃度也随之增加;很快 Python-SDK 在进行了较多验证和修改后,正式发布第一个稳定版本 1.0.0,同时对于 Nacos2.X 和高版本 Python 的适配也正在如火如荼的进行。

另外 Rust 语言作为近两年的语言新宠,社区的小伙伴和贡献者们也是热情高涨,很快就在社区中发布了对应的 Rust-SDK [ 4] ,并持续进行维护和更新;目前已经发布到 0.4.2 版本。

1.3.3 R-Nacos 和 nginx-nacos-upstream

除了各类多语言 SDK, Nacos 社区中也加入了其他生态项目,如 r-nacos [ 5] 通过 rust 重构 Nacos-Server 的项目,可以在一些对资源占用极其敏感的场景使用,加入社区后始终保持高频更新,已经更新至 0.5.23 版本,足够于本地开发和测试环境使用,释放更多本地资源,提升本地运行效率。

nginx 作为反向代理和网关,在过去的十年里一直经久不衰;但其配置无法动态更新,只能通过 reload 命令进行配置的重载一直被社区所诟病。nginx-nacos-upstream [ 6] 项目就是希望使用 nacos 来解决 nginx 的动态配置问题,项目开发者近期将项目贡献至 Nacos 社区,并保持持续的维护和更新。

未来展望

2.1 Nacos 3.0

Nacos 2.X 版本随着插件化逐渐完善,功能已经趋于稳定。Nacos 社区在去年已经开始想社区用户征集 Nacos3.0 中希望的功能和方向。在众多的反馈中,我们能够展望 Nacos3.0 将着重于更安全,更泛用,更云原生进行演进。

2.1.1 更安全

虽然 Nacos 2.X 中已经对安全性进行了一定程度的增强,但还不足以达到默认安全的程度;同时随着 Nacos 的用户越来越多、影响力越来越大,更多的攻击者开始关注 Nacos,这需要 Nacos 在 3.0 版本中对安全方面的内容进行更多的投入。

因此 Nacos 社区计划在 3.0 版本中,对默认的鉴权插件进行升级,同时将 API 进行重新的梳理和设计,区分 Console API(控制台 API)、Client API(客户端 API)、Admin API(运维 API)和 Inner API(内部通信 API),并针对不同的 API 类型采取不同的鉴权手段,提升 Nacos 的安全性,降低安全风险。

另外,Nacos 3.0 也计划拆分 Nacos 控制台和 Nacos 引擎的部署架构,允许 Nacos 控制台使用不同的端口和不同的进程启动,从部署架构层面和网络层面对访问来源进行进一步的限制,以提升安全性。

2.1.2 更泛用

Nacos 之前的应用场景根据聚焦在微服务领域和分布式高可用领域,并伴随一些动态分发和管理的场景。

在 Nacos 3.0 版本中,Nacos 将会支持分布式锁、按照分组订阅配置和服务等功能,以便能够支持一些分布式协调、更多网关类型的使用场景。

同时 Nacos 3.0 也会尝试向 AI 方向的使用场景进行探索,比如动态 prompt、训练任务调度分配等场景。让 Nacos More than Microservice。

2.1.3 更云原生

Nacos 在 2.X 版本已支持了 MCP 协议及简单 XDS 协议,进行了初步的生产环境实践,但这需要依赖于 Istio 等组件进行协议数据的聚合以及二次下发,这增加了运维成本和问题的排查链路。未来,我们将通过开展以下工作来提供云原生支持:

1)原生支持 XDS 协议,可直接提供完整的 XDS 协议数据和内容,可选的去除关于 Istio 等组件的依赖,减轻部署和运维负担。

2)打通 Kubernetes 数据,进行数据的双向同步,帮助用户更好的解决传统部署架构和 Kubernetes 部署的互通场景,同时提供 ServiceMesh 化支持,将 Nacos 发展成云原生时代高性能注册中心,接入 Kubernetes 核心生态。

3)提供轻量级的 Nacos Sidecar,为用户提供零侵入、轻量级的服务注册与发现能力。

2.2 质量体系重构

Nacos 2.X 在社区的努力和积极贡献下快速发展,在插件化能力、安全和易用性上有了极大提升;但是我们也发现在这个过程中,虽然社区一直在补充单元测试、以及贡献了 nacos-e2e [ 7] 并在每次提交后的触发运行,Nacos 的质量体系逐渐不足以支撑社区的高速发展。

因此在后续的规划中,Nacos 社区不仅会继续补充测试用例,完善 nacos-e2e 的运行,同时也会对集成测试的流程和用例进行彻底的重构,提升 Nacos 每次发布的质量。

感谢社区参与者

Nacos 的成就和快速发展,离不开社区贡献者和其他参与者的热情贡献和积极参与,在过去的 1W star 过程中,Nacos 社区新增了 200 位贡献者,同时有 10+ 位的贡献者成为社区的 Committer。再次感谢大家的参与和对 Nacos 不足的体谅。

同时 Nacos 也积极参与社会各界举办的开源活动,比如中国科学院软件研究所的开源之夏、GitLink 的编程夏令营、天池的通义灵码活动等等。获得了很多开源奖项和认可。

最后再次感谢所有参与 Nacos社区和活动的用户、贡献者、Committer,非常感谢你们的付出,我们一起让 Nacos 更强大。同时也欢迎更多加入社区贡献者队伍,共同进行 Nacos 云原生化实践!

相关链接:

[1] 插件

https://github.com/nacos-group/nacos-plugin

[2] go-sdk

https://github.com/nacos-group/nacos-sdk-go

[3] Python-SDK

https://github.com/nacos-group/nacos-sdk-python

[4] Rust-SDK

https://github.com/nacos-group/nacos-sdk-rust

[5] r-nacos

https://github.com/nacos-group/r-nacos?tab=readme-ov-file

[6] nginx-nacos-upstream

https://github.com/nacos-group/nginx-nacos-upstream

[7] nacos-e2e

https://github.com/nacos-group/nacos-e2e

标签:社区,Star,泛化,插件,3w,nacos,Nacos,版本,SDK
From: https://www.cnblogs.com/alisystemsoftware/p/18440453

相关文章

  • 线程的run()和start()有什么区别?
    run()方法:run()方法是Thread类的一个普通方法,用于定义线程的主体逻辑。当直接调用run()方法时,该方法会在当前线程的上下文中执行,而不会创建新的线程。直接调用run()方法,不会实现多线程的并发执行,而只是在当前线程中按照顺序执行run()方法的内容。publicclassMyRunn......
  • Spring--boot自动配置原理案例--阿里云--starter
    Spring–boot自动配置原理案例–阿里云–starter定义这个starter的作用是它可以将阿里云的工具类自动放入IOC容器中,供人使用。我们看一看构建starter的过程,其实就是在atuoconfigure模块中加入工具类,然后写一个配置类在其中将工具类放入IOC容器,之后在starter中引入atuoconf......
  • [lnsyoj1015/luoguP1197/JSOI2008]星球大战starwar
    题意给出一个\(n\)个点,\(m\)条边的无向图,对其进行\(k\)次操作,每次操作会删除一个当前无向图中存在的点及其相邻的边,求原图和每次操作之后的图的连通块个数sol由于需要计算连通块个数,可以自然的想到使用并查集解决。然而,删除某个点后,我们无法通过并查集快速地得知其与其他......
  • Github第一Star数的国产免费开源防火墙--雷池社区版初步体验
    前言近期准备搭建一个博客网站,用来存储工作室同学们的学习笔记。服务器准备直接放在公网上,方便大家随时随地的上传和浏览,为了防止网站被人日穿成为肉鸡,一些防御措施还是要部署的。首先明确自己的需求:零成本,效果好,易使用很明显适合我的,就只有开源WAF在经过相关资料的查阅后,我......
  • Stargazers Ghost Network在GitHub平台上的隐性威胁
    CheckPointResearch近期曝光了一个名为StargazersGhostNetwork的分发即服务(DaaS)网络,该网络利用GitHub这一全球知名的代码托管平台,通过精心设计的“幽灵账户”来隐秘地传播恶意软件。这一发现再次凸显了IP地址查询在识别和阻断网络威胁中的重要作用。StargazersGhostNetwork的......
  • ERROR:start workflow error,dolphinscheduler log重复刷屏(死循环)直至磁盘存满
    在使用ds过后发现,我虚拟机中的磁盘内存全部沾满了查看目录下大于100M的文件:find/-size+100M查看后发现问题在于ds产生的日志文件特别大而且多,查看日志后发现日志中一直都在死循环错误:startworkflowerror 等其中文件下的目录可以直接全部删除:cd /opt/install......
  • 对oceans_of_stars的T3爆标做法的基础结论的证明
    我们要证明的结论如下:\(x\)在\([1,x-1]\)中选取父亲,以这种方法构造树,节点\(x\)在其子树大小为\(i\)时的方案数为\(\binom{n-i-1}{x-2}\)。对于组合数有一个众所周知的结论:\[C_n^m=C_n^{n-m}\]然后把上面的选式转化一下,得到:\(\binom{n-i-1}{n-i-x+1}\)。还是组合数......
  • Elasticsearch7.7修改network.host IP地址 start启动失败及Elasticsearch7的配置项详
    一、Elasticsearch7.7修改network.hostIP地址start启动失败    使用的是最新的Elasticsearch7.7版本,启动后默认是绑到127.0.0.1上的,这肯定不是我们需要的,所以修改配置文件将network.host配置选改成我们的服务器局域网IP地址。Elasticsearch7.7版本安装后配置文件elastic......
  • 12K+ Star!Taipy:一个快速将数据和AI算法转化为Web应用的工具
    Taipy简介Taipy[1] 是一个为数据科学家和机器学习工程师设计的,用于构建数据和AIWeb应用的工具。它能够让用户无需学习新语言,只需使用Python,就能专注于数据和AI算法,而无需担心开发和部署的复杂性。它的核心优势在于简化了开发流程,使得用户可以专注于算法本身,而不是技术实......
  • Docker-compose 启动 mysql 报错 ERROR: for mysql Cannot start service mysql: fai
    报错详情root@hadoop107cmp]#docker-composeconfig-q[root@hadoop107cmp]#ll总用量70192-rw-r--r--.1rootroot718650749月2406:45docker-boot-0.0.1-SNAPSHOT.jar-rw-r--r--.1rootroot10149月2408:26docker-compose.yml-rw-r--r--.1rootro......