主頁 >  其他 > 重磅官宣:Nacos2.0性能提升10倍

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

2021-04-13 10:27:03 其他

簡介:?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化進行更深入地探索,


加入我們


歡迎在 Nacos github 上提交 Issue 與 PR 進行討論和貢獻,或加入Nacos社區群參與社區討論,也趁此機會感謝參與 Nacos 貢獻的 200+小伙伴! 感謝你們對中國開源事業的推動 !


除了參與開源,我們也歡迎更多有能力及有意愿的同學加入阿里云共建云原生,詳情請點擊職位鏈接,



原文鏈接:https://developer.aliyun.com/article/783139?

著作權宣告:本文內容由阿里云實名注冊用戶自發貢獻,著作權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任,具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》,如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻洗掉涉嫌侵權內容,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275400.html

標籤:AI

上一篇:Go語言“十誡”[譯]

下一篇:Android WebView 踩坑日記,字體怎么突然變小了???

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more