欢迎访问Spring Cloud中国社区

我们致力于成为中国最专业的Spring Boot和Spring Cloud交流社区。推荐使用Github直接登录,欢迎加微信号Software_King进入社区微信交流群。若发现网站bug欢迎反馈!

重磅!阿里巴巴新开源项目Nacos发布第一个版本,助力构建Dubbo生态

中间件小姐姐 · 22天前 · 606 ·

1、贡献 Dubbo 生态,阿里 Nacos 发布 v0.1.0 版本

在 6 月份 Aliware 技术行上海站 Dubbo 开发者沙龙上,阿里巴巴高级技术专家郭平 (坤宇) 宣布了阿里巴巴的一个新开源项目 Nacos,在上周五凌晨 (7 月 20 日) 低调发布了第一个版本。

https://nacos.io/#/?lang=zh-cn

坤宇在上一次线下活动中介绍了这个开源项目的初衷,他表示 “将通过 Nacos 项目将阿里巴巴在建设共享服务体系中使用的服务发现、配置及服务管理平台贡献给开源社区,通过打造 Dubbo + Nacos 的经典组合进一步释放 Dubbo 在云原生及 Service Mesh 时代中,在大规模微服务治理、流量治理、服务集成与服务共享等服务平台能力建设上的威力,同时 Nacos 会非常关注对主流开源社区,如 Spring Cloud 和 Kubernetes 云原生体系的无缝对接与支持”。

该项目目前的计划是通过未来 6~8 个月的持续努力,release 的 0.8 版本开始达到生产可用的状态,同时计划坚持社区化发展,在未来一年里计划吸收至少 10 名外部 Committer 和 5 个外部 PMC.


2、什么是 Nacos /nɑ:kəʊs/?

Nacos 是阿里巴巴的新开源项目,Nacos 发布 v0.1.0 版本的同时也发布了中英双语的官网,从其官网描述来看,其核心定位是 “一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台”。

Nacos 有三大主要功能:

• 任务发现与服务管理
在采用以“服务 (Service)”为中心的诸如微服务及云原生方式的现代应用架构时,动态服务发现至关重要。 Nacos 同时支持基于 DNS 和基于 RPC(如 Dubbo/gRPC)的服务发现,并为您提供服务的实时的健康检查以防止将请求发送给不健康的主机,基于 Nacos 您也可以更方便的实现服务断路器。Nacos 提供的强大的服务的元数据管理,路由及流量管理策略也能够帮助您更好的构建更强壮的微服务平台。

• 动态配置管理
动态配置服务允许您在所有环境中以集中和动态的方式管理所有应用程序或服务的配置。动态配置消除了配置更新时重新部署应用程序和服务的需要。可以更方便的帮助您实现无状态服务,更轻松地实现按需弹性扩展服务实例。

• 动态 DNS 服务
支持权重路由的动态 DNS 服务使您可以更轻松地在数据中心内的生产环境中实施中间层负载平衡,灵活的路由策略,流量控制和简单的 DNS 解析服务,动态 DNS 服务也帮你更容易的实现以 DNS 协议为基础的服务发现,以消除耦合到厂商私有服务发现 API 上的风险。

3、为什么开源 Nacos

阿里巴巴为什么选择这么一个时间点开源 Nacos,其背后的思考是什么,在更早的线下技术活动中,@坤宇也给出了详细的解读,坤宇表示主要基于以下几点:

• 围绕着 Service 为中心的分布式基础设施正在变的越来越重要

世界正在变的更快,创新和市场竞争的节奏正在变得愈发剧烈,如何超快速实现业务增长成为商业竞争的主旋律,几乎一夜之间共享单车就火遍全国,不到几年滴滴就改变了我们的打车方式,腾讯三班倒实现全民“吃鸡”,现在企业估值在从 0 到 100 亿所需的时间越来越短,而企业的平均寿命从标普的数据来看却从上世纪 60 年代的 60 年下降到了今天的 15 年,一切都表示创新和竞争的速度和烈度在加强。

另一方面技术基础设施的敏捷和有效性在商业成功的要素上占据的比重越来越大,云计算在资源和服务交付模式上的变革,带来了效率的革命性提升,带来了更敏捷的基础设施(创业不用再买机器并找机房托管,从以前的半年准备周期到现在在云上的小时级创建全套服务),而在应用架构层面,微服务架构模式带来的灵活性、韧劲,快速组合和聚合原子服务从而创新,给业务快速创新和试错提供了条件,已经被越来越多的应用平台证明其有效性,技术基础设施的更敏捷,给商业的敏捷和商业的竞争优势提供了基础。

在今天,无论是云计算,微服务还是围绕 Kubernetes 为中心的云原生,都在强调以“服务”为内核的应用架构模式,如果说 15 年前我们在讨论“一切皆是对象”构建单体系统,那么今天我们就是在谈论“一切皆是服务”,10 年前淘宝服务化改造顺应了这种趋势,8 年前微服务架构思想也顺应了这个趋势,今天面向“服务”的各种分布式基础设施正在变得越来越重要,站在阿里巴巴 10 年的服务化发展经验上看,在大规模服务发现和服务治理和服务共享领域现有的开源解决方案是不是都已经非常完美了呢?根据阿里巴巴服务化走过的这些年的生产经验来看,我们觉得并没有。

• 阿里巴巴在 “共享服务体系” 建设上的经验可以在各个行业大规模复用

阿里巴巴中台理念和体系,与云原生在精神的“道”上完全契合,即“厚技术平台,薄应用” 支持业务的快速创新与试错,从而赢得市场,中台体系倡导双引擎架构,略过“大数据”不谈,但看业务中台,就是一个大的以“服务”为中心的共享服务平台,在线服务沉淀业务数据,同步到大数据平台计算和挖掘,大数据平台则通过数据回馈,指导业务及服务的创新,支成可沉淀和可共享“服务”体系的服务注册与服务治理平台是这个体系的关键要素之一。

• “服务治理,服务沉淀、服务共享和服务的可持续发展”是“共享服务体系”的核心价值主张
支持创新从小苗长成参天大树,服务平台不断演进,这一切需要一个强大的服务平台和服务基础设施的支撑。

• 阿里巴巴将通过 Dubbo + Nacos 以及一系列开源项目打造服务发现、服务及流量管理、服务共享平台

4、Nacos 与 主流开源生态的关系

Nacos 不会是个封闭的体系,除了对于阿里开源生态体系如 Dubbo 等自身的支持,也非常强调融入其它的开源生态,这里就包括 Java 的微服务生态体系 Spring Cloud,Kubernetes/CNCF 云原生生态体系,正如 Nacos 的未来全景图展示的那样

• Dubbo + Nacos, 专为 Dubbo 而生的注册中心与配置中心

在阿里巴巴生产环境上,Dubbo 和 Nacos 天然就是长在一起的,因为 Nacos 的缺失,传统的注册中心解决方案让 Dubbo 在服务治理、流量治理、服务运营和管理等方面的威力被限制和削弱了,Nacos 的开源和开放会在采用 Dubbo 的用户环境中释放这些威力

• Nacos 会完全兼容 Spring Cloud

Nacos 会无缝支持 Spring Cloud,为 Spring Cloud 用户其提供更简便的配置中心和注册中心的解决方案,使用 Nacos 不用再仅仅为服务和配置就需要在生产上 hold 住 Eureka,Spring Cloud Config Server,Git,RabbitMQ/Kafka 起码四个开源产品。

• Nacos 支持 Kubernetes DNS-based Service Discovery

在演讲中坤宇也表示,阿里巴巴这么多年在 VIPServer DNS-based Service Discovery 上的实践证明,在云原生时代,应用会更关注与基础设施的解耦合、多语言乃至多云的诉求,服务发现的未来一定是基于标准的 DNS 协议做,而不是像 Eureka 或者像 ZooKeeper 这样的私有 API 或者协议做, 同时在云上,在服务发现场景中,注册中心更关注的是可用性而不是数据一致性,所以 Nacos 会首推 DNS-based Servcie Discovery,并优先关注可用性,而这也正是 Nacos 可以无缝融合进 Kubernetes 服务发现体系的原因所在

• Nacos 会填补 Spring Cloud 体系与 Kubernetes 体系的鸿沟

未来会有越来越多 java 生态的用户会选择 Kubernetes+Spring Cloud 组合,但不幸的是,在服务发现和配置管理的解决方案上,这 2 个体系都采用了完全不同的方案,这给同时采用 2 个体系的用户在注册中心和配置中心的需求上带来了非常大的不必要的复杂性。Nacos 会尝试填补 2 者的鸿沟,以便在 2 套体系下可以采用同一套服务发现和配置管理的解决方案,这将大大的简化使用和维护的成本。

• Nacos 与 Service Mesh

5、Nacos v0.1.0 特性预览

• 特性预览

相较于 @坤宇 6 月份对 Nacos v1.0 版本的部分特性给的整体预览

Nacos v0.1.0 还处于刚起步阶段,从 CHANGELOG.md 看

Nacos v0.1.0 这个版本主要是发布了基本的 Server 端代码, OpenAPI 以及 JavaSDK.

• 快速开始

从 Nacos 的快速开始来看,Nacos 确实是极易上手,几乎免安装,只需要简单的解压包, 启动 server 即可

核心的服务注册 & 发现,配置管理的 Demo API 也非常简单和直白:

从 Nacos 的文档 (https://nacos.io/#/docs/architecture.md?lang=en-us) 来看,在部署形态上,Nacos 会支持多种部署形态,包括注册中心与配置中心的分离部署,同时在阿里云上提供 Nacos 相应商业化版本的免费的 SaaS 化服务,可以直接在阿里云上开通账户免费体验 Nacos 对应的商业产品,在开源与商业化版本差别上,商业化的 ACM (https://www.aliyun.com/product/acm) 以及 EDAS ANS (https://www.aliyun.com/product/edas) 更强调与阿里云其它云服务以及其它 Aliware PaaS 的商业产品的集成体验以及提供商业服务。

6、Nacos 的主要产品里程碑及计划

Nacos v0.8.0 - Production Ready Version

在 Nacos 社区 RoadMap 文档 (https://nacos.io/#/docs/roadmap.md?lang=en-us) 中,也大概公布了 Nacos 后续的 1.0 及 2.0 的主要里程碑和版本研发计划, 同时特别强调了 Nacos v0.8.0 Production Ready 之前不建议在生产上大规模使用。

We plan to make Nacos available for production from Nacos 0.8.0. Prior to this release, we recommend that you use it only in development and test environments.

Our current plan is to strive to make Nacos production ready in the 6-8 months. The plan might be adjusted due to various factors, including the priority adjustment according to the voice of the community, but the overall plan is that it should not take longer than one year.

看来因为 Nacos 是脱胎于阿里巴巴的生产代码,整体体系可能非常庞杂,在代码梳理、重构和剥离与内部的耦合上是一个渐进的过程,Nacos 整体研发计划是在未来 6-8 个月将达到生产可用的状态。

7、社区化发展,欢迎加入并贡献社区

DISS is cheap, show me your hand 比吐槽更重要的是搭把手,参与社区一起发展 Nacos

与阿里巴巴早期的开源不同,阿里巴巴新一轮的开源包括 RocketMQ,Pouch Container,Dubbo, Nacos, Sentinel 等开源产品更强调社区化的发展与社区的多样性,鼓励更多的公司和更多的开发者参与到开源项目中来,依托于社区将产品做得更好,同时一开始就会关注国际化,与国外同类产品的直面竞争。

Nacos 初步计划,在第一年就吸收至少超过 5 名来自其它公司的 PMC, 至少 10 名的外部 Committer, 而且 Nacos 处在项目开源的初期,有大把的空间让有想法、有热情、有能力的开发者参与进来,如果您对 Nacos 这个开源项目感兴趣,可以加入 Nacos 社区。你可以通过扫 “超哥” 的微信二维码,让“超哥” 帮你加入 “Nacos 社区交流群” 。

8、如何贡献 Nacos 社区?

Nacos 本身在很多方面都急需要社区的帮助,以下几个方面都是可贡献和共建的重点方向:

• 在未来的产品和生产计划中使用、集成、共建 Nacos
• UI 前端及视觉大牛指导 Nacos 管控 UI 建设
• 提供与 Spring Cloud、Kubernetes、Service Mesh 等关联开源体系融合与集成代码和项目
• 贡献多语言客户端
• 提交需求,proposal,PR
• 贡献文档
• 分享自己与 Nacos 相关的故事
• 在 github 上 star Nacos, 鼓励一下程序员们