1. 重磅官宣:Nacos2.0發(fā)布,性能提升10倍

        共 4080字,需瀏覽 9分鐘

         ·

        2021-03-30 12:26

        繼 Nacos 1.0 發(fā)布以來,Nacos 迅速被成千上萬(wàn)家企業(yè)采用,并構(gòu)建起強(qiáng)大的生態(tài)。但是隨著用戶深入使用,逐漸暴露一些性能問題,因此我們啟動(dòng)了 Nacos 2.0 的隔代產(chǎn)品設(shè)計(jì),時(shí)隔半年我們終于將其全部實(shí)現(xiàn),實(shí)測(cè)性能提升 10 倍,相信能滿足所有用戶的性能需求。下面由我代表社區(qū)為大家介紹一下這款跨代產(chǎn)品。
         

        Nacos 簡(jiǎn)介


        Nacos 是一個(gè)更易于構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái)。它孵化于阿里巴巴,成長(zhǎng)于十年雙十一的洪峰考驗(yàn),沉淀了簡(jiǎn)單易用、穩(wěn)定可靠、性能卓越的核心競(jìng)爭(zhēng)力。

         


        Nacos 2.0 架構(gòu)

         

        全新 2.0 架構(gòu)不僅將性能大幅提升 10 倍,而且內(nèi)核進(jìn)行了分層抽象,并且實(shí)現(xiàn)插件擴(kuò)展機(jī)制。


        Nacos 2.0 架構(gòu)層次如下圖,它相比Nacos1.X的最主要變化是:


        • 通信層統(tǒng)一到 gRPC 協(xié)議,同時(shí)完善了客戶端和服務(wù)端的流量控制和負(fù)載均衡能力,提升的整體吞吐。

        • 將存儲(chǔ)和一致性模型做了充分抽象分層,架構(gòu)更簡(jiǎn)單清晰,代碼更加健壯,性能更加強(qiáng)悍。

        • 設(shè)計(jì)了可拓展的接口,提升了集成能力,如讓用戶擴(kuò)展實(shí)現(xiàn)各自的安全機(jī)制。


         

        Nacos2.0 服務(wù)發(fā)現(xiàn)升級(jí)一致性模型


        Nacos2.0 架構(gòu)下的服務(wù)發(fā)現(xiàn),客戶端通過 gRPC,發(fā)起注冊(cè)服務(wù)或訂閱服務(wù)的請(qǐng)求。服務(wù)端使用 Client 對(duì)象來記錄該客戶端使用 gRPC 連接發(fā)布了哪些服務(wù),又訂閱了哪些服務(wù),并將該 Client 進(jìn)行服務(wù)間同步。由于實(shí)際的使用習(xí)慣是服務(wù)到客戶端的映射,即服務(wù)下有哪些客戶端實(shí)例;因此 2.0 的服務(wù)端會(huì)通過構(gòu)建索引和元數(shù)據(jù),快速生成類似 1.X 中的 Service 信息,并將 Service 的數(shù)據(jù)通過  gRPC Stream 進(jìn)行推送。
         


        Nacos2.0 配置管理升級(jí)通信機(jī)制


        配置管理之前用 Http1.1 的 Keep Alive 模式 30s 發(fā)一個(gè)心跳模擬長(zhǎng)鏈接,協(xié)議難以理解,內(nèi)存消耗大,推送性能弱,因此 2.0 通過 gRPC 徹底解決這些問題,內(nèi)存消耗大量降低。


         
        Nacos2.0 架構(gòu)優(yōu)勢(shì)

         Nacos2.0 大幅降低了資源消耗,提升吞吐性能,優(yōu)化客戶端和服務(wù)端交互,對(duì)用戶更加友好;雖然可觀測(cè)性略微下降,但是整體性價(jià)比非常高。




        Nacos2.0 性能提升


        由于 Nacos 由服務(wù)發(fā)現(xiàn)和配置管理兩大模塊構(gòu)成,業(yè)務(wù)模型略有差異,因此我們下面分別介紹一下具體壓測(cè)指標(biāo)。


        Nacos2.0 服務(wù)發(fā)現(xiàn)的性能提升

        服務(wù)發(fā)現(xiàn)場(chǎng)景我們主要關(guān)注客戶端數(shù),服務(wù)數(shù)實(shí)例數(shù),及服務(wù)訂閱者數(shù)在大規(guī)模場(chǎng)景下,服務(wù)端在同步,推送及穩(wěn)定狀態(tài)時(shí)的性能表現(xiàn)。同時(shí)還關(guān)注在有大量服務(wù)在進(jìn)行上下線時(shí),系統(tǒng)的性能表現(xiàn)。


        • 容量及穩(wěn)定狀態(tài)測(cè)試


        該場(chǎng)景主要關(guān)注隨著服務(wù)規(guī)模和客戶端實(shí)例規(guī)模上漲,系統(tǒng)性能表現(xiàn)。



        可以看到 2.0.0 版本在 10W 級(jí)客戶端規(guī)模下,能夠穩(wěn)定的支撐,在達(dá)到穩(wěn)定狀態(tài)后,CPU 的損耗非常低。雖然在最初的大量注冊(cè)階段,由于存在瞬時(shí)的大量注冊(cè)和推送,因此有一定的推送超時(shí),但是會(huì)在重試后推送成功,不會(huì)影響數(shù)據(jù)一致性。


        反觀 1.X 版本,在 10W、5W 級(jí)客戶端下,服務(wù)端完全處于 Full GC 狀態(tài),推送完全失敗,集群不可用;在 2W 客戶端規(guī)模下,雖然服務(wù)端運(yùn)行狀態(tài)正常,但由于心跳處理不及時(shí),大量服務(wù)在摘除和注冊(cè)階段反復(fù)進(jìn)行,因此達(dá)不到穩(wěn)定狀態(tài),CPU 一直很高。1.2W 客戶端規(guī)模下,可以穩(wěn)定運(yùn)行,但穩(wěn)態(tài)時(shí) CPU 消耗是更大規(guī)模下 2.0 的 3 倍以上。

         
        • 頻繁變更測(cè)試


        該場(chǎng)景主要關(guān)注業(yè)務(wù)大規(guī)模發(fā)布,服務(wù)頻繁推送條件下,不同版本的吞吐和失敗率。


        ????????????????


        頻繁變更時(shí),2.0 和 1.X 在達(dá)到穩(wěn)定狀態(tài)后,均能穩(wěn)定支撐,其中 2.0 由于不再有瞬時(shí)的推送風(fēng)暴,因此推送失敗率歸 0,而 1.X 的 UDP 推送的不穩(wěn)定性導(dǎo)致了有極小部分推送出現(xiàn)了超時(shí),需要重試推送。
         
        Nacos2.0 配置管理的性能提升

        由于配置是少寫多讀場(chǎng)景,所以瓶頸主要在單臺(tái)監(jiān)聽的客戶端數(shù)量以及配置的推送獲取上,因此配置管理的壓測(cè)性能主要集中于單臺(tái)服務(wù)端的連接容量以及大量推送的比較。


        • Nacos2.0 連接容量測(cè)試


        該場(chǎng)景主要關(guān)注不同客戶端規(guī)模下的系統(tǒng)壓力。



        Nacos2.0 最高單機(jī)能夠支撐 4.2w 個(gè)配置客戶端連接,在連接建立的階段,有大量訂閱請(qǐng)求需要處理,因此 CPU 消耗較高,但達(dá)到穩(wěn)態(tài)后,CPU 的消耗會(huì)變得很低。幾乎沒有消耗。

        反觀 Nacos1.X, 在客戶端 6000 時(shí),穩(wěn)定狀態(tài)的 CPU 一直很高,且 GC 頻繁,主要原因是長(zhǎng)輪訓(xùn)是通過 hold 請(qǐng)求來保持連接,每 30s 需要回一次 Response 并且重新發(fā)起連接和請(qǐng)求。需要做大量的上下文切換,同時(shí)還需要持有所有 Request 和 Response。當(dāng)規(guī)模達(dá)到 1.2w 客戶端時(shí),已經(jīng)無法達(dá)到穩(wěn)態(tài),所以無法支撐這個(gè)量級(jí)的客戶端數(shù)。
         
        • Nacos2.0 頻繁推送測(cè)試


        該場(chǎng)景關(guān)注不同推送規(guī)模下的系統(tǒng)表現(xiàn)。



        在頻繁變更的場(chǎng)景,兩個(gè)版本都處于 6000 個(gè)客戶端連接中。明顯可以發(fā)現(xiàn) 2.0 版本的性能損耗要遠(yuǎn)低于 1.X 版本。在 3000tps 的推送場(chǎng)景下,優(yōu)化程度約優(yōu)化了 3 倍。
         
        Nacos2.0 性能結(jié)論
         
        針對(duì)服務(wù)發(fā)現(xiàn)場(chǎng)景,Nacos2.0 能夠在 10W 級(jí)規(guī)模下,穩(wěn)定運(yùn)行;相比 Nacos1.X 版本的 1.2W 規(guī)模,提升約 10 倍。

        針對(duì)配置管理場(chǎng)景,Nacos2.0 單機(jī)最高能夠支撐 4.2W 個(gè)客戶端連接;相比 Nacos1.X,提升了 7 倍。且推送時(shí)的性能明顯好于1.X。


         
        Nacos 生態(tài)及 2.X 后續(xù)規(guī)劃


        隨著 Nacos 三年的發(fā)展,幾乎支持了所有的 RPC 框架和微服務(wù)生態(tài),并且引領(lǐng)云原生微服務(wù)生態(tài)發(fā)展。



        Nacos 是整個(gè)微服務(wù)生態(tài)中非常核心的組件,它可以無縫和 K8s 服務(wù)發(fā)現(xiàn)體系互通,通過 MCP/XDS 協(xié)議與 Istio 通信,將 Nacos 服務(wù)下發(fā) Sidecar;同樣也可以和 CoreDNS 聯(lián)合,將 Nacos 服務(wù)通過域名模式暴露給下游調(diào)用。

        Nacos 目前已經(jīng)和各類微服務(wù) RPC 框架融合進(jìn)行服務(wù)發(fā)現(xiàn);另外可以協(xié)助高可用框架 Sentinel 進(jìn)行各類管理規(guī)則的控制和下發(fā)。

        如果只使用 RPC 框架,有時(shí)候并不足夠簡(jiǎn)單,因?yàn)椴糠?RPC 框架比如 gRPC 和 Thrift,還需要自行啟動(dòng) Server 并告知 client 該調(diào)用哪個(gè) IP。這時(shí)候就需要和應(yīng)用框架進(jìn)行融合,比如 SCA、Dapr 等;當(dāng)然也可以通過 Envoy Sidecar 來進(jìn)行流量控制,應(yīng)用層的RPC就不需要知道服務(wù) 的 IP 列表了。

        最后,Nacos 還可以和各類微服務(wù)網(wǎng)關(guān)打通,實(shí)現(xiàn)接入層的分發(fā)和微服務(wù)調(diào)用。
         
        Nacos 生態(tài)在阿里的實(shí)踐

        目前 Nacos 已經(jīng)完成了自研、開源、商業(yè)化三位一體的建設(shè),阿里內(nèi)部的釘釘、考拉、餓了么、優(yōu)酷等業(yè)務(wù)域已經(jīng)全部采用云產(chǎn)品 MSE 中的 Nacos 服務(wù),并且與阿里和云原生的技術(shù)棧無縫整合。下面我們以釘釘為例簡(jiǎn)單做一下介紹。



        Nacos 運(yùn)行在微服務(wù)引擎MSE (https://cn.aliyun.com/product/aliware/mse?spm=nacos-website.topbar.0.0.0,全托管的Nacos集群)上,進(jìn)行維護(hù)和多集群管理;業(yè)務(wù)的各類 Dubbo3 或 HSF 服務(wù)在啟動(dòng)時(shí),通過 Dubbo3 自身注冊(cè)到 Nacos 集群中;然后 Nacos 通過 MCP 協(xié)議將服務(wù)信息同步到 Istio 和 Ingress-Envoy 網(wǎng)關(guān)。
         

        用戶流量從北向進(jìn)入集團(tuán)的 VPC 網(wǎng)絡(luò)中,先通過一個(gè)統(tǒng)一接入 Ingress-Tengine 網(wǎng)關(guān),他可以將域名解析并路由到不同的機(jī)房、單元等。本周我們也同步更新了 Tengine 2.3.3(https://github.com/alibaba/tengine/releases/tag/2.3.3)版本,內(nèi)核升級(jí)到 Nginx Core 1.18.0 ,支持 Dubbo 協(xié)議 ,支持 DTLSv1 和 DTLSv1.2,支持 Prometheus 格式,從而提升阿里云微服務(wù)生態(tài)完整性、安全性、可觀測(cè)性。


        通過統(tǒng)一接入層網(wǎng)關(guān)后,用戶請(qǐng)求會(huì)通過 Ingress-Envoy 微服務(wù)網(wǎng)關(guān),轉(zhuǎn)發(fā)到對(duì)應(yīng)的微服務(wù)中,并進(jìn)行調(diào)用。如果需要調(diào)用到其他網(wǎng)絡(luò)域的服務(wù),會(huì)通過 Ingress-Envoy 微服務(wù)網(wǎng)關(guān)將流量導(dǎo)入到對(duì)應(yīng)的 VPC 網(wǎng)絡(luò)中,從而打通不同安全域、網(wǎng)絡(luò)域和業(yè)務(wù)域的服務(wù)。


        微服務(wù)之間的相互調(diào)用,會(huì)通過 Envoy Sidecar 或傳統(tǒng)的微服務(wù)自訂閱的方式進(jìn)行。最終,用戶請(qǐng)求在各個(gè)微服務(wù)的互相調(diào)用中,完成并返回給用戶。


        Nacos 2.X 的規(guī)劃
         
        Nacos2.X 將在 2.0 解決性能問題的基礎(chǔ)上,通過插件化實(shí)現(xiàn)新的功能并改造大量舊功能,使得 Nacos 能夠更方便,更易于拓展。



        總結(jié)


        Nacos2.0 作為一個(gè)跨代版本,徹底解決了 Nacos1.X 的性能問題,將性能提升了 10 倍。并且通過抽象和分層讓架構(gòu)更加簡(jiǎn)單,通過插件化更好的擴(kuò)展,讓 Nacos 能夠支持更多場(chǎng)景,融合更廣生態(tài)。相信 Nacos2.X 在后續(xù)版本迭代后,會(huì)更加易用,解決更多微服務(wù)問題,并向著 Mesh 化進(jìn)行更深入地探索。

         

        后臺(tái)回復(fù) 學(xué)習(xí)資料 領(lǐng)取學(xué)習(xí)視頻


        如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝


        瀏覽 120
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 玩弄少妇高潮A片水蜜桃网站 | 空姐一级毛片免费看 | 97国产露脸视频97在线视频 | 6~12呦孩精品XXXX视频视频 | 亚洲黄色视频网站 |