简介: 3 月 20 日,Nacos 2.0 正式发布。Nacos 是阿里巴巴在 2018 年开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,也可以理解为微服务的注册中心 + 配置中心。

来源 | 阿里巴巴云原生公众号

3 月 20 日,Nacos 2.0 正式发布。Nacos 是阿里巴巴在 2018 年开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,也可以理解为微服务的注册中心 + 配置中心。

Nacos 目前在获取用户和开源社区运维上都取得了不错的成绩。据 Nacos 联合创始人李艳林介绍,在一次 2245 人样本的开发者调研中显示,用户在注册中心的选择上,选择 Nacos 的开发者已经达到了 49%。Nacos 在同领域中已经是国内开发者的首选。

此外 Nacos 开源社区的贡献者有 80% 以上来自阿里之外,贡献了 Nacos 的 20% 左右的代码,尤其 Nacos 多语言部分,全部由外部开发者贡献,并且保持着不错的迭代速度。

而此次大升级,相较 1.x 版本,Nacos 2.0 性能提升了 10 倍,内核进行了分层抽象,并且实现插件扩展机制。未来 Nacos 计划通过集成主流 Sidecar 技术完成对 Nacos 多语言生态和云原生生态的整合。

为进一步了解 Nacos 是如何完成 2.0 架构大升级,实现 10 倍性能提升的,以及 Nacos 社区运营经验和未来规划。OSCHINA 邀请 Nacos 联合创始人为我们做了深入解读。

Nacos 之于微服务 = Etcd 之于 K8s

Q:首先介绍下自己吧,如个人背景、与 Nacos 项目是如何结缘的等等?

A:大家好,我是李艳林,花名彦林,阿里云软负载团队负责人,Nacos 联合创始人。阿里云产品 MSE 创始人。

随着开源对云计算行业影响越来越大,2018 年阿里加大了对开源的投入,我有幸参与 Nacos 开源工作,围绕着 Dubbo/Spring-cloud-alibaba 阿里微服务生态,提供开发者完整的微服务解决方案。

Q:介绍下 Nacos 诞生、发展的历史吧?

A:Nacos 在阿里巴巴起源于 2008 年五彩石项目(完成微服务拆分和业务中台建设),成长于十年双十一的洪峰考验,沉淀了简单易用、稳定可靠、性能卓越的核心竞争力。随着云计算兴起,2018 年我们深刻感受到开源软件行业的影响,因此决定将 Nacos(阿里内部 Configserver/Diamond/Vipserver 内核) 开源,输出阿里十年的沉淀,推动微服务行业发展。

2018 年我们将 Nacos 正式开源,并快速成为国内最受关注开源产品,虎牙也最早跟进参与了 Nacos 的开发,并且大规模生产落地,后续视频行业快速跟随采用。

2018 年 Nacos 开源,meetup @ 深圳

2019 年我们发布 Nacos 1.0版本,标志着 Nacos 功能稳定成熟,并且支持了几乎所有的微服务框架和编程语言,由此 Nacos 被广泛使用,Nacos 也进入了高速发展期。

2019 年 Nacos 1.0 发布,Nacos Meetup @ 杭州

2020 年新年伊始 Nacos Star 数破万,并且我们陆续发 1.X 多个版本,完成了存储和一致性模型的抽象分层,架构跟清晰和稳健,Nacos 也进入大规模使用期。

2021 年我们发布 Nacos2.0 版本,性能提升十倍,Nacos 进入第二发展曲线,以性能、高可用、生态为核心竞争力,继续保持高速发展。

Q:您认为 Nacos 在云原生中间件江湖中的地位如何?

A:Nacos 首先在同领域中已经是国内开发者的首选,Nacos 2.0 发布后有开发者自发发起调研,看大家注册中心的选项,从调研结果来看,选择 Nacos 的开发者已经达到了 49%。随着 2.0 发布,Nacos 的竞争优势正在不断扩大。

Nacos 代表的注册中心和配置中心在云原生中间件中就是最核心的服务,因为分布式后首先要解决的就是寻址问题。

我也可以做一个类比,Nacos 相对于微服务的地位,就跟 Etcd 相对 K8s 地位是一样的。

2.0 架构升级

Q:Nacos 2.0 服务发现、配置管理性能提升 10 倍具体是怎么做到的,具体是哪些场景,测试方式是什么?背后对应的是哪些技术架构的升级?

A:18 年开源的时候考虑到简单易用,我们基于内部产品内核做了一些取舍,如通信协议改成了 http 模式,这样简单,多语言容易实现,但是短链接确实性能弱了一些。

服务模型上我们有持久化和非持久化两种模式,开源的时候我们考虑持久化模式可以做更多的服务治理能力,但是发展一段时间够发现外面主流场景都是非持久化服务,但是也为性能问题埋了一些坑,主要模型不太匹配,当然我们现在做了很好的抽象和统一才能比较好的解决这个问题。对于 Dubbo 和 Spring-cloud-alibaba 这种最常规的非持久化服务性能提升最明显。

测试方式主要是针对服务和配置的关键的使用场景构建了几个典型的压测模型进行压测。

核心升级了通信协议、一致性模型、架构分层和抽象。

Q:这次升级到 2.0 过程中有没有遇到一些技术难题,是怎么解决的?

A:

  • 长连接协议选型:我们内部有一个私有长链接协议,市场上有 gRPC/Rsocket 两个主流选择,我们为了兼容必须做好扩展抽象,为了多语言容易实现和集成我们也做了很多压测验证。最终选择了 gRPC。从模型上看 Rsocket 的推模型对于 Nacos 更合适,在生态和多语言支持上 gRPC 更合适,综合平衡我们选择了 gRPC,并且做好扩展,以便后续有更好的选择。
  • 服务一致性模型:Nacos 底层服务分为持久化服务和非持久化服务,在一致性模式和存储方式上有比较大差别,经过漫长时间打磨,我们把模型做好了抽象和融合,把每个场景性能都发挥到极致。
  • 无缝升级方案:一般开源产品协议的跨代升级基本都是不考虑兼容的,但是由于 Nacos 有广泛用户基础,因此我们还是消耗了巨大的精力做好兼容工作,以便让所有用户能够升级享受到这些红利。

Q:听说阿里内部已经有了百万实例的案例,具体是指什么,可以详细介绍下吗?
A:2020 年面对云原生大的趋势和阿里内部实例规模突破百万的大背景下,我们发起了中间件 4.0 项目,核心解决扩展性和标准化问题。实例指的是微服务实例节点,微服务实例节点。对于 Nacos 模型来说,关键性能指标一个是实例规模(业务发布启动写频繁),一个是单实例注册的服务规模(需要维持心跳消耗内存和网络),后续我们可以找一个单独机会,我详细给大家分享一下阿里百万实例软负载的实践。

2020 年内部 KO,中间件 4.0 开启云原生中间件时代

Q:Nacos 在阿里内外部的落地情况如何?可以对比介绍下吗?

A:目前 Nacos 已经完成了自研、开源、商业化三位一体的建设,阿里内部的钉钉、考拉、饿了么、优酷等业务域已经全部采用云产品 MSE 中的 Nacos 服务,并且与阿里和云原生的技术栈无缝整合。

发展规划及商业化

Q:Nacos 2.X 规划中,很多关于插件的方面的优化,这样设计的原因和目标是什么?

A:随着 Nacos 代码库日益庞大,之前耦合比较紧密的代码不方便扩展,用户定制性有比较高,又提交不到社区,如安全功能,因此通过扩展机制提升用户根据自己场景定制能力,当然也能更好的跟各个生态集成。

Q:官宣 2.0 版本时提到,Nacos 以后会向 Mesh 化方向深入探索。这里的 Mesh 是指 Service Mesh 吗,有什么技术难点,具体要做哪些事情?

A:是的,由于 Service Mesh 通过 Sidecar 模式能比较好的解决多语言问题,因此我们期望通过集成主流 Sidecar 技术完成对 Nacos 多语言生态和云原生生态的整合。

目前核心是 Istio 目前的性能指标挑战还很大,Sidecar 目前自动灰度升级是一个挑战,对于中小公司目前落地风险可控。

Q:Nacos 作为一款产品来看,其发展目标是偏向为阿里业务做好支撑,还是希望能发展更多外部用户?如果是后者,有没有大致的商业计划?

A:从 2020 年开始,阿里云就提出了“三位一体”理念,即将“自研技术”、“开源项目”、“商业产品”形成统一的技术体系,最大化技术的价值。通过开源扩大生态,通过阿里集团场景锻造高性能和高可用能力,通过云产品构建产品化能力。

2020 年 1 月,我们就发布了 Nacos 有对应的商业化产品-微服务引擎(Micro Service Engine)简称 MSE,并对外提供商业化服务。它是一个面向业界主流开源微服务生态的一站式微服务平台, 提供注册中心、配置中心全托管(兼容 Nacos/ZooKeeper/Eureka),网关(兼容 Zuul/Kong/Spring Cloud Gateway),和无侵入的开源增强服务治理能。

2020 年双 11 ,我们就全面使用 EDAS、Dubbo、RocketMQ、AHAS、ARMS、MSE、PTS 等阿里云云产品来支撑双 11,做到了和客户在同一架“飞机”上。可以说阿里巴巴集团是阿里云的最大的公有云用户,目前已经有大量业务已经跑在阿里云 MSE 托管的 Nacos 上面了。预计 2021 年双十一阿里集团将 100% 跑到我们公有云产品上面。目前阿里云上已有数万企业采用了我们商业化产品 MSE 中托管的 Nacos,而且我们会加大对此投入,以便更好的服务阿里云用户。

最后,我们希望广大的开发者可以通过 Nacos 的开源,享受到阿里微服务体系的技术红利;另外通过阿里云的规模效应,企业用户可以通过 Nacos 商业化产品 MSE,获得比开源自建更稳定、成本更经济的产品红利。

Nacos 开源社区

Q:Nacos 2.0 发布之后开发者的热烈反响,为什么,怎么做开发者维护的?

A:首先 Nacos 经过近三年发展已经成为国内首选,有着广泛的群众基础;其次 Nacos2.0 是一个跨代产品,性能提升十倍,诚意十足的贡献了阿里核心能力,最后感谢媒体朋友,在这开放的时代让好的产品、技术大规模推广。

我们在开发者关系上简单分为贡献者和使用者。对于几百名贡献者,我们是通过定期周会机制交流一些前沿技术的想法和贡献的思路,根据贡献程度授予不同的社区名誉,帮助我们贡献者扩大技术影响力。

对于使用者,我们通过定期的 Meetup 和要求用户分享最佳实践的方式进行互通。从而形成正向循环。另外我们非常重视降低新手使用者使用 Nacos 的门槛,所以我们在文档建设、教程建设上都投入了很多精力。今年,我们将在知行动手实验室上线完整的 Nacos 入门教程,帮助开发者们更好地上手。

Q:Nacos 开源社区现况如何?是否调查过贡献者构成?

A:目前应该也是二八定律,80% 以上是外面的贡献者,贡献了 Nacos 的 20% 左右的代码,其中 chuntaojun、KeRan213539、paderlol、horizonzy 等小伙伴一直保持贡献。这个对于中国开源是有非常重要的意义,尤其 Nacos 多语言部分,全部是外部开发者贡献,而且保持着不错的迭代速度。

在社区数字化运营上,我们联合 X-lab,通过数据化、自动化的方式,清晰地展示出 Nacos 和对标的项目的活跃度、关注度趋势,和社区协作网络图,能快速定位社区里的活跃开发者。

借此机会感谢我们 200 多名为 Nacos 贡献代码的小伙伴!也期望更多的小伙伴能够参与到 Nacos 开源工作中来,一起把 Nacos 做强。

原文链接​​​​​​​

本文为阿里云原创内容,未经允许不得转载。

Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外的更多相关文章

  1. 云 MongoDB 优化让 LBS 服务性能提升十倍

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 随着国内服务共享化的热潮普及,共享单车,共享雨伞,共享充电宝等各种服务如雨后春笋,随之而来的LBS服务定位问题成为了后端服务的一个挑战.M ...

  2. 必看!如何让你的LBS服务性能提升十倍!

    本文由云+社区发表 作者:腾讯云数据库团队 随着国内服务共享化的热潮普及,共享单车,共享雨伞,共享充电宝等各种服务如雨后春笋,随之而来的LBS服务定位问题成为了后端服务的一个挑战.MongoDB对LB ...

  3. 重构、插件化、性能提升 20 倍,Apache DolphinScheduler 2.0 alpha 发布亮点太多!

    点击上方 蓝字关注我们 社区的小伙伴们,好消息!经过 100 多位社区贡献者近 10 个月的共同努力,我们很高兴地宣布 Apache DolphinScheduler 2.0 alpha 发布.这是 ...

  4. Web 应用性能提升 10 倍的 10 个建议

    转载自http://blog.jobbole.com/94962/ 提升 Web 应用的性能变得越来越重要.线上经济活动的份额持续增长,当前发达世界中 5 % 的经济发生在互联网上(查看下面资源的统计 ...

  5. 如何将 iOS 工程打包速度提升十倍以上

    如何将 iOS 工程打包速度提升十倍以上   过慢的编译速度有非常明显的副作用.一方面,程序员在等待打包的过程中可能会分心,比如刷刷朋友圈,看条新闻等等.这种认知上下文的切换会带来很多隐形的时间浪费. ...

  6. Nacos 2.0 正式发布,性能提升 10 倍!!

    3月20号,Nacos 2.0.0 正式发布了! Nacos 简介: 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. 通俗点讲,Nacos 就是一把微服务双刃剑:注册中心 + 配置中 ...

  7. 百万级高并发mongodb集群性能数十倍提升优化实践

    背景 线上某集群峰值TPS超过100万/秒左右(主要为写流量,读流量很低),峰值tps几乎已经到达集群上限,同时平均时延也超过100ms,随着读写流量的进一步增加,时延抖动严重影响业务可用性.该集群采 ...

  8. 将Web应用性能提高十倍的10条建议

    导读 提高 web 应用的性能从来没有比现在更重要过.网络经济的比重一直在增长:全球经济超过 5% 的价值是在因特网上产生的(数据参见下面的资料).这个时刻在线的超连接世界意味着用户对其的期望值也处于 ...

  9. 将 Web 应用性能提高十倍的10条建议

    提高 web 应用的性能从来没有比现在更重要过.网络经济的比重一直在增长:全球经济超过 5% 的价值是在因特网上产生的(数据参见下面的资料).这个时刻在线的超连接世界意味着用户对其的期望值也处于历史上 ...

  10. 在MongoDB中创建一个索引而性能提升1000倍的小例子

    在https://www.cnblogs.com/xuliuzai/p/9965229.html的博文中我们介绍了MongoDB的常见索引的创建语法.部分同学还想看看MongoDB的威力到底有多大,所 ...

随机推荐

  1. 单点登录之CAS简单介绍

    cas官网http://www.ja-sig.org/products/cas/. ok,现在开始本文的重点内容讲解,先来了解一下cas 实现single sign out的原理,如图所示:      ...

  2. JS(循环)

    一 for循环 在程序中,一组被重复执行的语句被称之为循环体,能否继续重复执行,取决于循环的终止条件.由循环体及循环的终止条件组成的语句,被 称之为循环语句 1 语法结构 for循环主要用于把某些代码 ...

  3. JavaScript自定义响应式对象

    1. 引言 这里的响应式对象是指JavaScript中的变量与HTML中的内容相绑定,变量更新则内容更新,也叫数据绑定 此时不得不说MVVM架构,MVVM架构思想的实现步骤如下: 模型(Model): ...

  4. 记录--分享并解析一个倒计时组件(Vue)

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.前言 入职的第一个需求是跟着一位前端大佬一起完成的一个活动项目. 由于是一起开发,当然不会放过阅读大佬的代码的机会. 因为我的页面中需 ...

  5. 揭秘镭速传输点对点传输技术,NAT+Raysync强强组合

    点对点传输是一种文件即时传输方式用于实现数据的快速联动,为所有客户端提供资源,包括带宽.存储空间.计算能力.点对点传输技术有很多应用,包括共享各种格式音频.视频.数据等. 在5G重新定义带宽,信息技术 ...

  6. 【已解决】git reset命令误删本地文件怎么恢复

    执行 git  reflog 命令可以看到曾经执行过的操作,还有版本序号. 执行 git reset --hard HEAD@{[填那个序号]} 就可以恢复本地删除的文件了!

  7. Python爬虫爬取1905电影网视频电影并存储到mysql数据库

    数据获取方式:微信搜索关注[靠谱杨阅读人生]回复[电影].整理不易,资源付费,谢谢支持! 代码: 1 import time 2 import traceback 3 import requests ...

  8. Codeforces Round #726 (Div. 2)

    CF1537A Arithmetic Array 洛谷传送门 CF1537A 分析 用这 \(n\) 个数的总和 \(sum\) 判断: 如果 \(sum<n\) 直接用 \(n-sum+1\) ...

  9. #prim,gcd#UVA12716 GCD XOR&洛谷 1550 [USACO08OCT]Watering Hole G

    UVA12716 GCD XOR 题目 \[\sum_{i=1}^{n}\sum_{j=i}^n[\gcd(i,j)==i\;xor\;j] \] 分析 首先来证明一下如果上式成立,那么\(i\;xo ...

  10. #Multi-SG#HDU 3032 Nim or not Nim?

    题目 有\(n\)堆石子,每次可以从一堆中取出若干个或是将一堆分成两堆非空的石子, 取完最后一颗石子获胜,问先手是否必胜 分析 它的后继还包含了分成两堆非空石子的SG函数,找规律可以发现 \[SG[x ...