重磅官宣:Nacos2.0发布,性能提升10倍

简介: ​Nacos2.0 作为一个跨代版本,彻底解决了 Nacos1.X 的性能问题,将性能提升了 10 倍。

作者:席翁

 

继 Nacos 1.0 发布以来,Nacos 迅速被成千上万家企业采用,并构建起强大的生态。 但是随着用户深入使用,逐渐暴露一些性能问题,因此我们启动了 Nacos 2.0 的隔代产品设计,时隔半年我们终于将其全部实现,实测性能提升10倍,相信能满足所有用户的性能需求。下面由我代表社区为大家介绍一下这款跨代产品。

 

Nacos 简介

 

Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它 孵化于 阿里巴巴,成长于十年双十一的洪峰考验,沉淀了简单易用、稳定可靠、性能卓越的核心竞争力。

Nacos 2.0 架构

 

全新2.0 架构不仅将性能大幅提升10倍,而且内核进行了分层抽象,并且实现插件扩展机制。

 

Nacos 2.0 架构层次如下图,它相比Nacos1.X的最主要变化是:

 

  • 通信层统一到gRPC协议,同时完善了客户端和服务端的流量控制和负载均衡能力,提升的整体吞吐。
  • 将存储和一致性模型做了充分抽象分层,架构更简单清晰,代码更加健壮,性能更加强悍。
  • 设计了可拓展的接口,提升了集成能力,如让用户扩展实现各自的安全机制。

 

 

Nacos2.0 服务发现升级一致性模型

 

Nacos2架构下的服务发现,客户端通过Grpc,发起注册服务或订阅服务的请求。服务端使用Client对象来记录该客户端使用Grpc连接发布了哪些服务,又订阅了哪些服务,并将该Client进行服务间同步。由于实际的使用习惯是服务到客户端的映射,即服务下有哪些客户端实例;因此2.0的服务端会通过构建索引和元数据,快速生成类似1.X中的Service信息,并将Service的数据通过Grpc Stream进行推送。

 

Nacos2.0 配置管理升级通信机制

 

配置管理之前用Http1.1的Keep Alive模式30s发一个心跳模拟长链接,协议难以理解,内存消耗大,推送性能弱,因此2.0通过gRPC彻底解决这些问题,内存消耗大量降低。

 

 

Nacos2.0 架构优势

 

Nacos2.0大幅降低了资源消耗,提升吞吐性能,优化客户端和服务端交互,对用户更加友好;虽然可观测性略微下降,但是整体性价比非常高。

 

Nacos2.0 性能提升

 

由于Nacos由服务发现和配置管理两大模块构成,业务模型略有差异,因此我们下面分别介绍一下具体压测指标。

 

Nacos2.0 服务发现的性能提升

 

服务发现场景我们主要关注客户端数,服务数实例数,及服务订阅者数在大规模场景下,服务端在推送及稳定状态时的性能表现。同时还关注在有大量服务在进行上下线时,系统的性能表现。

 

容量及稳定状态测试

该场景主要关注随着服务规模和客户端实例规模上涨,系统性能表现。

 

可以看到2.0.0版本在10W级客户端规模下,能够稳定的支撑,在达到稳定状态后,CPU的损耗非常低。虽然在最初的大量注册阶段,由于存在瞬时的大量注册和推送,因此有一定的推送超时,但是会在重试后推送成功,不会影响数据一致性。

反观1.X版本,在10W、5W级客户端下,服务端完全处于Full GC状态,推送完全失败,集群不可用;在2W客户端规模下,虽然服务端运行状态正常,但由于心跳处理不及时,大量服务在摘除和注册阶段反复进行,因此达不到稳定状态,CPU一直很高。1.2W客户端规模下,可以稳定运行,但稳态时CPU消耗是更大规模下2.0的3倍以上。

 

频繁变更测试

该场景主要关注业务大规模发布,服务频繁推送条件下,不同版本的吞吐和失败率。

频繁变更时,2.0和1.X在达到稳定状态后,均能稳定支撑,其中2.0由于不再有瞬时的推送风暴,因此推送失败率归0,而1.X的UDP推送的不稳定性导致了有极小部分推送出现了超时,需要重试推送。

 

Nacos2.0 配置管理的性能提升

 

由于配置是少写多读场景,所以瓶颈主要在单台监听的客户端数量以及配置的推送获取上,因此配置管理的压测性能主要集中于单台服务端的连接数量以及大量推送的比较。

Nacos2.0 连接容量测试

该场景主要关注不同客户端规模下的系统压力。

 

Nacos2.0 最高单机能够支撑4.2w个配置客户端连接,在连接建立的阶段,有大量订阅请求需要处理,因此CPU消耗较高,但达到稳态后,CPU的消耗会变得很低。几乎没有消耗。

反观Nacos1.X, 在客户端6000时,稳定状态的CPU一直很高,且GC频繁,主要原因是长轮训是通过hold请求来保持连接,每30s需要回一次 Response并且重新发起连接和请求。需要做大量的上下文切换,同时还需要持有所有Request 和 Response。当规模达到1.2w客户端时,已经无法达到稳态,所以无法支撑这个量级的客户端数。

 

Nacos2.0 频繁推送测试

该场景关注不同推送规模下的系统表现。

 

在频繁变更的场景,两个版本都处于6000个客户端连接中。明显可以发现2.0版本的性能损耗要远低于1.X版本。 在3000tps的推送场景下,优化程度约优化了3倍。

 

Nacos2.0 性能结论

 

针对服务发现场景,Nacos2.0能够在10W级规模下,稳定运行;相比Nacos1.X版本的1.2W规模,提升约10倍。

 

针对配置管理场景,Nacos2.0单机最高能够支撑4.2W个客户端连接;相比Nacos1.X,提升了7倍。且推送时的性能明显好于1.X。

 

 

Nacos生态及2.X后续规划

 

随着Nacos三年的发展,几乎支持了所有开源的RPC框架和微服务生态,并且引领云原生微服务生态发展。

 

Nacos在整个微服务生态中非常核心的组件,它可以无缝和K8s服务发现体系互通,通过MCP/XDS协议与Istio通信将Nacos服务下发Sidecar;同样也可以和CoreDNS联合,将Nacos服务通过域名模式暴露给下游调用。

 

Nacos目前已经和各类微服务RPC框架融合,进行服务发现;另外可以协助高可用框架Sentinel进行各类管理规则的控制和下发。

 

如果只使用RPC框架,有时候并不足够简单,因为部分RPC框架比如Grpc和Thrift,还需要自行启动Server并告知client该调用哪个IP。 这时候就需要和应用框架进行融合,比如SCA、Dapr等;当然也可以通过Envoy Sidecar来进行流量控制,应用层的RPC就不需要知道服务的ip列表了。

 

最后,Nacos还可以和各类微服务网关打通,实现接入层的分发和微服务调用。

 

Nacos 生态在阿里的实践

 

目前Nacos已经完成了自研、开源、商业化三位一体的建设,阿里内部的钉钉、考拉、饿了么、优酷等业务域已经全部采用云产品MSE中的Nacos服务,并且将阿里和云原生的技术栈无缝整合。 下面我们以钉钉为例简单做一下介绍。

 

Nacos运行在 微服务引擎MSE(全托管的Nacos集群) 上,进行维护和多集群管理;业务的各类Dubbo3或HSF服务在启动时通过Dubbo3自身注册到Nacos集群中;然后Nacos通过MCP协议将服务信息同步到Istio和Ingress-Envoy网关。

 

用户流量从北向进入集团的VPC网络中,先通过一个统一接入Ingress-Tengine网关,他可以将域名解析并路由到不同的机房,单元等。本周我们也同步更新了 Tengine 2.3.3 版本,内核升级到Nginx Core 1.18.0 ,支持Dubbo协议 ,支持DTLSv1和DTLSv1.2,支持Prometheus格式,从而提升阿里云微服务生态完整性、安全性、可观测性。

 

通过统一接入层网关后,用户请求会通过Ingress-Envoy微服务网关,转发到对应的微服务中,并进行调用。如果需要调用到其他网络域的服务,会通过Ingress-Envoy微服务网关将流量导入到对应的VPC网络中,从而打通不同安全域、网络域和业务域的服务。

 

微服务之间的相互调用,会通过Envoy Sidecar或传统的微服务自订阅的方式进行。最终,用户请求在各个微服务的互相调用中,完成并返回给用户。

 

Nacos 2.X的规划

 

Nacos2.X将在2.0解决性能问题的基础上,通过插件化实现新的功能并改造大量旧功能,使得Nacos能够更方便,更易于拓展。

 

 

总结

 

Nacos2.0作为一个跨代版本,彻底解决了Nacos1.X的性能问题,将性能提升了10倍。并且通过抽象和分层让架构更加简单,通过插件化更好的扩展,让Nacos能够支持更多场景,融合更广生态。相信Nacos2.X在后续版本迭代后,会更加易用,解决更多微服务问题,并向着Mesh化进行更深入地探索。

原文链接

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle解决存储嗅探,DBA警示录:存储故障的处理应当谨慎

DBA警示录:存储故障的处理应当谨慎昨天有客户的存储出现问题,导致数据库崩溃,需要进行数据库恢复。客户的存储使用RAID 5划分,声称出现故障后未进行任何操作,可是当存储恢复工程师将文件恢复出来后,文件显示…

python识别手写文字_如何快速使用Python神经网络识别手写字符?(文末福利)

原标题:如何快速使用Python神经网络识别手写字符?(文末福利) 点击标题下[异步社区]可快速关注 在本文中,我们将进一步探讨一些使用Python神经网络识别手写字符非常有趣的想法。如果只是想了解神经网络的基本知识,那不必阅读本文,可…

一年增加 1.2w 星,Dapr 能否引领云原生中间件的未来?

简介: 虽然 Dapr 在国外有很高的关注度,但在国内知名度非常低,而且现有的少量 Dapr 资料也偏新闻资讯和简单介绍,缺乏对 Dapr 的深度解读。在 Dapr v1.0 发布之际,我希望可以通过这篇文章帮助大家对 Dapr 形成一个准确…

第五届“强网杯”青少年专项赛盛大开赛

9月25日,第五届“强网杯”青少年专项赛线上赛盛大开赛。作为国家级赛事强网杯的系列专项赛,青少年专项赛圆满践行了向青少年普及网络安全知识与技能,提升青少年网络安全素养和创新能力,发掘优秀青少年网络安全人才的办赛初衷和愿景…

源码解读:KubeVela 是如何将 appfile 转换为 K8s 特定资源对象的

简介: KubeVela 是一个简单易用又高度可扩展的云原生应用管理引擎,是基于 Kubernetes 及阿里云与微软云共同发布的云原生应用开发模型 OAM 构建。本文主要目的是探索 KubeVela 如何将一个 appfile 文件转换为 K8s 中特定的资源对象。 作者 | 樊大勇 Kub…

oracle默认导出路径linux,传统路径导出 VS 直接路径导出(oracle exp direct=y)

Oracle 传统的Export与Import依旧被保留到11g,而且9i与10g有很多依旧使用Export与Import方式进行备份与恢复的企业。从Oracle 7.3开始,传统的exp导出程序提供两种的导出路径方式,一个是传统路径导出(Conventional Path Export),一…

web 前端 如何分享到instagram_好程序员web前端教程分享前端javascript练习题三

好程序员web前端教程分享前端javascript练习题三cookie一周内免登录样式代码:姓名:密码:一周内免登陆js功能代码:var inputdocument.getElementsByTagName("input");if(getCookie("usename")){ //判端cookie是…

一文详解SQL关联子查询

简介: 本文主要介绍什么是关联子查询以及如何将关联子查询改写为普通语义的sql查询。 本文主要介绍什么是关联子查询以及如何将关联子查询改写为普通语义的sql查询。 在背景介绍中我们将讲讲常见的关联子查询的语义,关联子查询语法的好处以及其执行时对…

阿里巴巴研究员叔同:云原生是企业数字创新的最短路径

作者:叔同 今天,数字化成为企业的核心竞争力,千行百业都在拥抱云计算,拥抱云原生。2020年我们认为是云原生的落地元年,那么2021年将是云原生加速推动企业数字创新的关键节点。在3月29日阿里云计算峰会上,阿…

Kubernetes 微服务监控体系

作者|无敌码农来源|无敌码农监控系统是运维体系乃至整个软件产品生命周期中最重要的一环,完善的监控可以帮助我们事前及时发现故障,事后快速追查定位问题。而在以微服务为代表的云原生架构体系中,系统分为多个层次,服务之间调用链…

python解zuobiaoxi方程_滑坡稳定性分析程序初探---Python版!

0 前言 山体滑坡是常见的自然灾害,从理论分析的角度讲,滑坡的稳定性分析方法源自于高中物理学,如图1所示。前者的滑动分析非常简单,在已知滑块的重量以及接触面摩擦系数的基础上通过计算下滑力和抗滑力的关系即可分析其稳定性&…

php 动态 控件,PHP技术在动态网页表单控件提取中的应用研究

曲小纳摘要:由于电子商务及网络信息技术的飞速发展,动态网站已经逐渐取代传统的静态网站,在不断向人工智能化等方向发展。该篇文章就针对PHP这种技术在动态网页表单控件提取中的应用进行详细的阐述。关键词:PHP;动态网页;表单中图…

冷启动延时缩短50%-80%,阿里云函数计算发布冷启动加速技术

简介: 近日,阿里云函数计算重磅发布冷启动加速技术,将原本属于开发者的镜像优化负担转由函数计算承担,进一步帮助开发者提高生产效率,专注业务创新。该技术源于阿里集团超大规模和场景高度复杂的容器环境,对…

评审恩仇录——IDE也能做代码评审?

简介: 云效Codeup推出了本地IDE插件端的评审,免除了黄药师来回华山的奔波之苦 现代科技公司的同事们平日一起交流开发规约和产品需求,肩上共同扛着业务发展和同行竞争的压力,这份还书贻剑的情谊如何能引来恩仇呢?通过…

云原生数据仓库TPC-H第一背后的Laser引擎大揭秘

简介: 作者| 魏闯先阿里云数据库资深技术专家 一、ADB PG 和Laser 计算引擎的介绍 (一)ADB PG 架构 ADB PG 是一款云原生数据仓库,在保证事务ACID 能力的前提下,主要解决云上海 量数据的实时分析问题。它的架构与传…

新云网、5G、Wi-Fi 6 Plus,探秘2021通信展上的锐捷网络黑科技

供稿 | 锐捷网络 出品 | CSDN云计算 2021年9月27日,主题为“创新点亮数字化未来”的第三十届中国国际信息通信展览会(PT EXPO 2021)在北京如期开幕。展会汇聚业内的科技创新技术专家和优秀企业,共同探讨数字化创新的新趋势、新场…

【OpenYurt 深度解析】边缘网关缓存能力的优雅实现

简介: 阿里云边缘容器服务上线 1 年后,正式开源了云原生边缘计算解决方案 OpenYurt,跟其他开源的容器化边缘计算方案不同的地方在于:OpenYurt 秉持 Extending your native Kubernetes to edge 的理念,对 Kubernetes 系…

python的类名一定要大写吗_python 类名

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 如果我从中执行此操作的函数是实例的类派生的基类,我如何找到在python中创建对象实例的类的名称…

Elasticsearch生态技术峰会 | 阿里云Elasticsearch云原生内核

简介: 开源最大的特征就是开放性,云生态则让开源技术更具开放性与创造性,Elastic 与阿里云的合作正是开源与云生态共生共荣的典范。值此合作三周年之际,我们邀请业界资深人士相聚云端,共话云上Elasticsearch生态与技术…

剑指云原生数据库 2.0,阿里云发布全新一站式敏捷数据仓库解决方案

作为基础软件“三驾马车”之一的数据库,其发展历程可追溯到60年前:从上世纪50年代的层次数据库、网状数据库,70年代的关系型数据库,再到90年代的关系型数据库、数据仓库、PC单机数据库和 2000 年的开源数据库,Oracle等…