贡献Dubbo生态,阿里Nacos开源计划
在上周六的Aliware技术行上海站Dubbo开发者沙龙上,阿里巴巴高级技术专家郭平(坤宇)宣布了阿里巴巴的一个新开源计划,阿里巴巴计划在7月份开启一个名叫Nacos的新开源项目, 在活动演讲中,坤宇介绍了这个开源项目的初衷,他表示 “将通过Nacos项目将阿里巴巴在建设共享服务体系中使用的服务发现、配置及服务管理平台贡献给开源社区,通过打造Dubbo + Nacos的经典组合进一步释放Dubbo在云原生及Service Mesh时代中,在大规模微服务治理、流量治理、服务集成与服务共享等服务平台能力建设上的威力,同时Nacos会非常关注对主流开源社区,如Spring Cloud和Kubernetes云原生体系的无缝对接与支持”。该项目预计在7月中旬之前开放首个测试预览版本,并计划在未来6~8个月release的0.8版本开始达到生产可用的状态。
活动的 视频回放
什么是 Nacos /nɑ:kəʊs/
?
Nacos 是阿里巴巴的新开源项目,其核心定位是 “一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台”。
Nacos 有三大主要功能:
- 服务发现与服务管理
在采用以“服务(Service)”为中心的诸如微服务及云原生方式的现代应用架构时,动态服务发现至关重要。 Nacos同时支持基于DNS和基于RPC(如Dubbo/gRPC)的服务发现,并为您提供服务的实时的健康检查以防止将请求发送给不健康的主机,基于Nacos您也可以更方便的实现服务断路器。Nacos提供的强大的服务的元数据管理,路由及流量管理策略也能够帮助您更好的构建更强壮的微服务平台。
- 动态配置管理
动态配置服务允许您在所有环境中以集中和动态的方式管理所有应用程序或服务的配置。动态配置消除了配置更新时重新部署应用程序和服务的需要。可以更方便的帮助您实现无状态服务,更轻松地实现按需弹性扩展服务实例。
- 动态DNS服务
支持权重路由的动态DNS服务使您可以更轻松地在数据中心内的生产环境中实施中间层负载平衡,灵活的路由策略,流量控制和简单的DNS解析服务,帮助您更容易的实现DNS-based服务发现。
为什么开源 Nacos
阿里巴巴为什么选择这么一个时间点开源Nacos,其背后的思考是什么,坤宇也给出了详细的解读,在演讲中,坤宇表示主意基于以下几点:
- 围绕着Service为中心的分布式基础设施正在变的越来越重要
世界正在变的更快,创新和市场竞争的节奏正在变得愈发剧烈,如何超快速实现业务增长成为商业竞争的主旋律,几乎一夜之间共享单车就火遍全国,不到几年滴滴就改变了我们的打车方式,腾讯三班倒实现全民“吃鸡”,现在企业估值在从0到100亿所需的时间越来越短,而企业的平均寿命从标普的数据来看却从上世纪60年代的60年下降到了今天的15年,一切都表示创新和竞争的速度和烈度在加强。
另一方面技术基础设施的敏捷和有效性在商业成功的要素上占据的比重越来越大,云计算在资源和服务交付模式上的变革,带来了效率的革命性提升,带来了更敏捷的基础设施(创业不用再买机器并找机房托管,从以前的半年准备周期到现在在云上的小时级创建全套服务),而在应用架构层面,微服务架构模式带来的灵活性、韧劲,快速组合和聚合原子服务从而创新,给业务快速创新和试错提供了条件,已经被越来越多的应用平台证明其有效性,技术基础设施的更敏捷,给商业的敏捷和商业的竞争优势提供了基础。
在今天,无论是云计算,微服务还是围绕Kubernetes为中心的云原生,都在强调以“服务”为内核的应用架构模式,如果说15年前我们在讨论“一切皆是对象”构建单体系统,那么今天我们就是在谈论“一切皆是服务”,10年前淘宝服务化改造顺应了这种趋势,8年前微服务架构思想也顺应了这个趋势,今天面向“服务”的各种分布式基础设施正在变得越来越重要,站在阿里巴巴10年的服务化发展经验上看,在大规模服务发现和服务治理和服务共享领域现有的开源解决方案是不是都已经非常完美了呢?根据阿里巴巴服务化走过的这些年的生产经验来看,我们觉得并没有。
- 阿里巴巴在 "共享服务体系" 建设上的经验可以在各个行业大规模复用
阿里巴巴中台理念和体系,与云原生在精神的“道”上完全契合,即“厚技术平台,薄应用” 支持业务的快速创新与试错,从而赢得市场,中台体系倡导双引擎架构,略过“大数据”不谈,但看业务中台,就是一个大的以“服务”为中心的共享服务平台,在线服务沉淀业务数据,同步到大数据平台计算和挖掘,大数据平台则通过数据回馈,指导业务及服务的创新,支成可沉淀和可共享“服务”体系的服务注册与服务治理平台是这个体系的关键要素之一。
- “服务治理,服务沉淀、服务共享和服务的可持续发展”是“共享服务体系”的核心价值主张
支持创新从小苗长成参天大树,服务平台不断演进,这一切需要一个强大的服务平台和服务基础设施的支撑。
- 阿里巴巴将通过Dubbo + Nacos以及一系列开源项目打造服务发现、服务及流量管理、服务共享平台
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
Nacos 部分特性预览
同时在会上,坤宇对Nacos 1.0版本的部分特性给大家做了预览
每个产品都有自己的风格和标签,坤宇在演讲中表示,团队会通过持续的贡献和努力,希望未来给Nacos贴上四个方面的标签
在部署形态上,Nacos会支持多种部署形态,包括注册中心与配置中心的分离部署,同时在阿里云上提供Nacos的SaaS化部署服务,感兴趣的可以直接在阿里云上开通账户免费体验Nacos服务,在开源与商业化版本差别上,商业化的ACM以及EDAS ANS更强调与阿里云其它云服务以及其它Aliware PaaS的商业产品的集成体验以及提供商业服务。
Nacos 的主要产品里程碑及计划
罗马不是一天建成的,吾将上下而求索
因为Nacos是脱胎于阿里巴巴的生产代码,整体体系非常庞杂,在代码梳理、重构和剥离与内部的耦合上是一个渐进的过程,所以@坤宇特别提醒社区在Nacos 0.8达到生产可用状态前,不建议用于生产,不过可以在开发和测试环境尝试使用,在0.8版本开始,大家可以放心的用于生产环境,Nacos整体研发计划是在未来6-8个月将达到生产可用的状态,未来会很快启动将Nacos贡献给开源基金会进一步社区化发展。
Nacos 与相关开源产品的对比
君子和而不同
如上面对整体业务及技术形式的判断,我们可以看到 Nacos 与同类竞品的主要不同主要在于理念,@坤宇介绍说,严格来说这些市面上的产品并不与Nacos完全对标,只是与Nacos里面的服务发现部分对标,Nacos的未来更看重在这些产品的基础上构建服务平台的能力,而不仅仅是在基础的服务发现能力上。
社区化发展,欢迎加入并贡献社区
DISS is cheap, show me your hand 比吐槽更重要的是搭把手,参与社区一起发展Nacos
与阿里巴巴早期的开源不同,阿里巴巴新一轮的开源包括RocketMQ,Pouch Container,Dubbo, Nacos等开源产品更强调社区化的发展与社区的多样性,鼓励更多的公司和更多的开发者参与到开源项目中来,依托于社区将产品做得更好,同时一开始就会关注国际化,与国外同类产品的直面竞争。
Nacos初步计划,在第一年就吸收至少超过5名来自其它公司的PMC,至少10名的外部Committer, 而且Nacos处在项目开源的初期,有大把的空间让有想法、有热情、有能力的开发者参与进来,Nacos本身在很多方面都急需要社区的帮助,这里面就急需包括前端及UI建设,Spring Cloud、Kubernetes、Service Mesh体系融合与集成,多语言客户端等各方面的技术领导者的参与,如果您对Nacos这个开源项目感兴趣,欢迎加入Nacos社区。你可以通过扫“超哥”的微信二维码,让“超哥” 帮你加入 “Nacos社区交流群”