Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外
來源 | 阿里巴巴云原生公眾號
3 月 20 日,Nacos 2.0 正式發(fā)布。Nacos 是阿里巴巴在 2018 年開源的一個(gè)更易于構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái),也可以理解為微服務(wù)的注冊中心 + 配置中心。
Nacos 目前在獲取用戶和開源社區(qū)運(yùn)維上都取得了不錯(cuò)的成績。據(jù) Nacos 聯(lián)合創(chuàng)始人李艷林介紹,在一次 2245 人樣本的開發(fā)者調(diào)研中顯示,用戶在注冊中心的選擇上,選擇 Nacos 的開發(fā)者已經(jīng)達(dá)到了 49%。Nacos 在同領(lǐng)域中已經(jīng)是國內(nèi)開發(fā)者的首選。
此外 Nacos 開源社區(qū)的貢獻(xiàn)者有 80% 以上來自阿里之外,貢獻(xiàn)了 Nacos 的 20% 左右的代碼,尤其 Nacos 多語言部分,全部由外部開發(fā)者貢獻(xiàn),并且保持著不錯(cuò)的迭代速度。
而此次大升級,相較 1.x 版本,Nacos 2.0 性能提升了 10 倍,內(nèi)核進(jìn)行了分層抽象,并且實(shí)現(xiàn)插件擴(kuò)展機(jī)制。未來 Nacos 計(jì)劃通過集成主流 Sidecar 技術(shù)完成對 Nacos 多語言生態(tài)和云原生生態(tài)的整合。
為進(jìn)一步了解 Nacos 是如何完成 2.0 架構(gòu)大升級,實(shí)現(xiàn) 10 倍性能提升的,以及 Nacos 社區(qū)運(yùn)營經(jīng)驗(yàn)和未來規(guī)劃。OSCHINA 邀請 Nacos 聯(lián)合創(chuàng)始人為我們做了深入解讀。
Nacos 之于微服務(wù) = Etcd 之于 K8s
Q:首先介紹下自己吧,如個(gè)人背景、與 Nacos 項(xiàng)目是如何結(jié)緣的等等?
A:大家好,我是李艷林,花名彥林,阿里云軟負(fù)載團(tuán)隊(duì)負(fù)責(zé)人,Nacos 聯(lián)合創(chuàng)始人。阿里云產(chǎn)品 MSE 創(chuàng)始人。
隨著開源對云計(jì)算行業(yè)影響越來越大,2018 年阿里加大了對開源的投入,我有幸參與 Nacos 開源工作,圍繞著 Dubbo/Spring-cloud-alibaba 阿里微服務(wù)生態(tài),提供開發(fā)者完整的微服務(wù)解決方案。
Q:介紹下 Nacos 誕生、發(fā)展的歷史吧?
A:Nacos 在阿里巴巴起源于 2008 年五彩石項(xiàng)目(完成微服務(wù)拆分和業(yè)務(wù)中臺(tái)建設(shè)),成長于十年雙十一的洪峰考驗(yàn),沉淀了簡單易用、穩(wěn)定可靠、性能卓越的核心競爭力。隨著云計(jì)算興起,2018 年我們深刻感受到開源軟件行業(yè)的影響,因此決定將 Nacos(阿里內(nèi)部 Configserver/Diamond/Vipserver 內(nèi)核) 開源,輸出阿里十年的沉淀,推動(dòng)微服務(wù)行業(yè)發(fā)展。
2018 年我們將 Nacos 正式開源,并快速成為國內(nèi)最受關(guān)注開源產(chǎn)品,虎牙也最早跟進(jìn)參與了 Nacos 的開發(fā),并且大規(guī)模生產(chǎn)落地,后續(xù)視頻行業(yè)快速跟隨采用。
2018 年 Nacos 開源,meetup @ 深圳
2019 年我們發(fā)布 Nacos 1.0版本,標(biāo)志著 Nacos 功能穩(wěn)定成熟,并且支持了幾乎所有的微服務(wù)框架和編程語言,由此 Nacos 被廣泛使用,Nacos 也進(jìn)入了高速發(fā)展期。
2019 年 Nacos 1.0 發(fā)布,Nacos Meetup @ 杭州
2020 年新年伊始 Nacos Star 數(shù)破萬,并且我們陸續(xù)發(fā) 1.X 多個(gè)版本,完成了存儲(chǔ)和一致性模型的抽象分層,架構(gòu)跟清晰和穩(wěn)健,Nacos 也進(jìn)入大規(guī)模使用期。
2021 年我們發(fā)布 Nacos2.0 版本,性能提升十倍,Nacos 進(jìn)入第二發(fā)展曲線,以性能、高可用、生態(tài)為核心競爭力,繼續(xù)保持高速發(fā)展。
Q:您認(rèn)為 Nacos 在云原生中間件江湖中的地位如何?
A:Nacos 首先在同領(lǐng)域中已經(jīng)是國內(nèi)開發(fā)者的首選,Nacos 2.0 發(fā)布后有開發(fā)者自發(fā)發(fā)起調(diào)研,看大家注冊中心的選項(xiàng),從調(diào)研結(jié)果來看,選擇 Nacos 的開發(fā)者已經(jīng)達(dá)到了 49%。隨著 2.0 發(fā)布,Nacos 的競爭優(yōu)勢正在不斷擴(kuò)大。
Nacos 代表的注冊中心和配置中心在云原生中間件中就是最核心的服務(wù),因?yàn)榉植际胶笫紫纫鉀Q的就是尋址問題。
我也可以做一個(gè)類比,Nacos 相對于微服務(wù)的地位,就跟 Etcd 相對 K8s 地位是一樣的。
2.0 架構(gòu)升級
Q:Nacos 2.0 服務(wù)發(fā)現(xiàn)、配置管理性能提升 10 倍具體是怎么做到的,具體是哪些場景,測試方式是什么?背后對應(yīng)的是哪些技術(shù)架構(gòu)的升級?
A:18 年開源的時(shí)候考慮到簡單易用,我們基于內(nèi)部產(chǎn)品內(nèi)核做了一些取舍,如通信協(xié)議改成了 http 模式,這樣簡單,多語言容易實(shí)現(xiàn),但是短鏈接確實(shí)性能弱了一些。
服務(wù)模型上我們有持久化和非持久化兩種模式,開源的時(shí)候我們考慮持久化模式可以做更多的服務(wù)治理能力,但是發(fā)展一段時(shí)間夠發(fā)現(xiàn)外面主流場景都是非持久化服務(wù),但是也為性能問題埋了一些坑,主要模型不太匹配,當(dāng)然我們現(xiàn)在做了很好的抽象和統(tǒng)一才能比較好的解決這個(gè)問題。對于 Dubbo 和 Spring-cloud-alibaba 這種最常規(guī)的非持久化服務(wù)性能提升最明顯。
測試方式主要是針對服務(wù)和配置的關(guān)鍵的使用場景構(gòu)建了幾個(gè)典型的壓測模型進(jìn)行壓測。
核心升級了通信協(xié)議、一致性模型、架構(gòu)分層和抽象。
Q:這次升級到 2.0 過程中有沒有遇到一些技術(shù)難題,是怎么解決的?
A:
- 長連接協(xié)議選型:我們內(nèi)部有一個(gè)私有長鏈接協(xié)議,市場上有 gRPC/Rsocket 兩個(gè)主流選擇,我們?yōu)榱思嫒荼仨氉龊脭U(kuò)展抽象,為了多語言容易實(shí)現(xiàn)和集成我們也做了很多壓測驗(yàn)證。最終選擇了 gRPC。從模型上看 Rsocket 的推模型對于 Nacos 更合適,在生態(tài)和多語言支持上 gRPC 更合適,綜合平衡我們選擇了 gRPC,并且做好擴(kuò)展,以便后續(xù)有更好的選擇。
- 服務(wù)一致性模型:Nacos 底層服務(wù)分為持久化服務(wù)和非持久化服務(wù),在一致性模式和存儲(chǔ)方式上有比較大差別,經(jīng)過漫長時(shí)間打磨,我們把模型做好了抽象和融合,把每個(gè)場景性能都發(fā)揮到極致。
- 無縫升級方案:一般開源產(chǎn)品協(xié)議的跨代升級基本都是不考慮兼容的,但是由于 Nacos 有廣泛用戶基礎(chǔ),因此我們還是消耗了巨大的精力做好兼容工作,以便讓所有用戶能夠升級享受到這些紅利。
Q:聽說阿里內(nèi)部已經(jīng)有了百萬實(shí)例的案例,具體是指什么,可以詳細(xì)介紹下嗎?
A:2020 年面對云原生大的趨勢和阿里內(nèi)部實(shí)例規(guī)模突破百萬的大背景下,我們發(fā)起了中間件 4.0 項(xiàng)目,核心解決擴(kuò)展性和標(biāo)準(zhǔn)化問題。實(shí)例指的是微服務(wù)實(shí)例節(jié)點(diǎn),微服務(wù)實(shí)例節(jié)點(diǎn)。對于 Nacos 模型來說,關(guān)鍵性能指標(biāo)一個(gè)是實(shí)例規(guī)模(業(yè)務(wù)發(fā)布啟動(dòng)寫頻繁),一個(gè)是單實(shí)例注冊的服務(wù)規(guī)模(需要維持心跳消耗內(nèi)存和網(wǎng)絡(luò)),后續(xù)我們可以找一個(gè)單獨(dú)機(jī)會(huì),我詳細(xì)給大家分享一下阿里百萬實(shí)例軟負(fù)載的實(shí)踐。
2020 年內(nèi)部 KO,中間件 4.0 開啟云原生中間件時(shí)代
Q:Nacos 在阿里內(nèi)外部的落地情況如何?可以對比介紹下嗎?
A:目前 Nacos 已經(jīng)完成了自研、開源、商業(yè)化三位一體的建設(shè),阿里內(nèi)部的釘釘、考拉、餓了么、優(yōu)酷等業(yè)務(wù)域已經(jīng)全部采用云產(chǎn)品 MSE 中的 Nacos 服務(wù),并且與阿里和云原生的技術(shù)棧無縫整合。
發(fā)展規(guī)劃及商業(yè)化
Q:Nacos 2.X 規(guī)劃中,很多關(guān)于插件的方面的優(yōu)化,這樣設(shè)計(jì)的原因和目標(biāo)是什么?
A:隨著 Nacos 代碼庫日益龐大,之前耦合比較緊密的代碼不方便擴(kuò)展,用戶定制性有比較高,又提交不到社區(qū),如安全功能,因此通過擴(kuò)展機(jī)制提升用戶根據(jù)自己場景定制能力,當(dāng)然也能更好的跟各個(gè)生態(tài)集成。
Q:官宣 2.0 版本時(shí)提到,Nacos 以后會(huì)向 Mesh 化方向深入探索。這里的 Mesh 是指 Service Mesh 嗎,有什么技術(shù)難點(diǎn),具體要做哪些事情?
A:是的,由于 Service Mesh 通過 Sidecar 模式能比較好的解決多語言問題,因此我們期望通過集成主流 Sidecar 技術(shù)完成對 Nacos 多語言生態(tài)和云原生生態(tài)的整合。
目前核心是 Istio 目前的性能指標(biāo)挑戰(zhàn)還很大,Sidecar 目前自動(dòng)灰度升級是一個(gè)挑戰(zhàn),對于中小公司目前落地風(fēng)險(xiǎn)可控。
Q:Nacos 作為一款產(chǎn)品來看,其發(fā)展目標(biāo)是偏向?yàn)榘⒗飿I(yè)務(wù)做好支撐,還是希望能發(fā)展更多外部用戶?如果是后者,有沒有大致的商業(yè)計(jì)劃?
A:從 2020 年開始,阿里云就提出了“三位一體”理念,即將“自研技術(shù)”、“開源項(xiàng)目”、“商業(yè)產(chǎn)品”形成統(tǒng)一的技術(shù)體系,最大化技術(shù)的價(jià)值。通過開源擴(kuò)大生態(tài),通過阿里集團(tuán)場景鍛造高性能和高可用能力,通過云產(chǎn)品構(gòu)建產(chǎn)品化能力。
2020 年 1 月,我們就發(fā)布了 Nacos 有對應(yīng)的商業(yè)化產(chǎn)品-微服務(wù)引擎(Micro Service Engine)簡稱 MSE,并對外提供商業(yè)化服務(wù)。它是一個(gè)面向業(yè)界主流開源微服務(wù)生態(tài)的一站式微服務(wù)平臺(tái), 提供注冊中心、配置中心全托管(兼容 Nacos/ZooKeeper/Eureka),網(wǎng)關(guān)(兼容 Zuul/Kong/Spring Cloud Gateway),和無侵入的開源增強(qiáng)服務(wù)治理能。
2020 年雙 11 ,我們就全面使用 EDAS、Dubbo、RocketMQ、AHAS、ARMS、MSE、PTS 等阿里云云產(chǎn)品來支撐雙 11,做到了和客戶在同一架“飛機(jī)”上。可以說阿里巴巴集團(tuán)是阿里云的最大的公有云用戶,目前已經(jīng)有大量業(yè)務(wù)已經(jīng)跑在阿里云 MSE 托管的 Nacos 上面了。預(yù)計(jì) 2021 年雙十一阿里集團(tuán)將 100% 跑到我們公有云產(chǎn)品上面。目前阿里云上已有數(shù)萬企業(yè)采用了我們商業(yè)化產(chǎn)品 MSE 中托管的 Nacos,而且我們會(huì)加大對此投入,以便更好的服務(wù)阿里云用戶。
最后,我們希望廣大的開發(fā)者可以通過 Nacos 的開源,享受到阿里微服務(wù)體系的技術(shù)紅利;另外通過阿里云的規(guī)模效應(yīng),企業(yè)用戶可以通過 Nacos 商業(yè)化產(chǎn)品 MSE,獲得比開源自建更穩(wěn)定、成本更經(jīng)濟(jì)的產(chǎn)品紅利。
Nacos 開源社區(qū)
Q:Nacos 2.0 發(fā)布之后開發(fā)者的熱烈反響,為什么,怎么做開發(fā)者維護(hù)的?
A:首先 Nacos 經(jīng)過近三年發(fā)展已經(jīng)成為國內(nèi)首選,有著廣泛的群眾基礎(chǔ);其次 Nacos2.0 是一個(gè)跨代產(chǎn)品,性能提升十倍,誠意十足的貢獻(xiàn)了阿里核心能力,最后感謝媒體朋友,在這開放的時(shí)代讓好的產(chǎn)品、技術(shù)大規(guī)模推廣。
我們在開發(fā)者關(guān)系上簡單分為貢獻(xiàn)者和使用者。對于幾百名貢獻(xiàn)者,我們是通過定期周會(huì)機(jī)制交流一些前沿技術(shù)的想法和貢獻(xiàn)的思路,根據(jù)貢獻(xiàn)程度授予不同的社區(qū)名譽(yù),幫助我們貢獻(xiàn)者擴(kuò)大技術(shù)影響力。
對于使用者,我們通過定期的 Meetup 和要求用戶分享最佳實(shí)踐的方式進(jìn)行互通。從而形成正向循環(huán)。另外我們非常重視降低新手使用者使用 Nacos 的門檻,所以我們在文檔建設(shè)、教程建設(shè)上都投入了很多精力。今年,我們將在知行動(dòng)手實(shí)驗(yàn)室上線完整的 Nacos 入門教程,幫助開發(fā)者們更好地上手。
Q:Nacos 開源社區(qū)現(xiàn)況如何?是否調(diào)查過貢獻(xiàn)者構(gòu)成?
A:目前應(yīng)該也是二八定律,80% 以上是外面的貢獻(xiàn)者,貢獻(xiàn)了 Nacos 的 20% 左右的代碼,其中 chuntaojun、KeRan213539、paderlol、horizonzy 等小伙伴一直保持貢獻(xiàn)。這個(gè)對于中國開源是有非常重要的意義,尤其 Nacos 多語言部分,全部是外部開發(fā)者貢獻(xiàn),而且保持著不錯(cuò)的迭代速度。
在社區(qū)數(shù)字化運(yùn)營上,我們聯(lián)合 X-lab,通過數(shù)據(jù)化、自動(dòng)化的方式,清晰地展示出 Nacos 和對標(biāo)的項(xiàng)目的活躍度、關(guān)注度趨勢,和社區(qū)協(xié)作網(wǎng)絡(luò)圖,能快速定位社區(qū)里的活躍開發(fā)者。
借此機(jī)會(huì)感謝我們 200 多名為 Nacos 貢獻(xiàn)代碼的小伙伴!也期望更多的小伙伴能夠參與到 Nacos 開源工作中來,一起把 Nacos 做強(qiáng)。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里巴巴云原生 etcd 服务集群管控优
- 下一篇: Service Mesh 从“趋势”走向