重磅!阿里巴巴新開源項目Nacos發(fā)布第一個版本,助力構(gòu)建Dubbo生態(tài)(阿里巴巴 開源項目)
作者 | 阿里中間件團隊
編輯 | 小智
1 貢獻 Dubbo 生態(tài),阿里 Nacos 發(fā)布 v0.1.0 版本
在 6 月份 Aliware 技術(shù)行上海站 Dubbo 開發(fā)者沙龍上,阿里巴巴高級技術(shù)專家郭平 (坤宇) 宣布了阿里巴巴的一個新開源項目 Nacos,在上周五凌晨 (7 月 20 日) 低調(diào)發(fā)布了第一個版本。
坤宇在上一次線下活動中介紹了這個開源項目的初衷,他表示 “將通過 Nacos 項目將阿里巴巴在建設(shè)共享服務(wù)體系中使用的服務(wù)發(fā)現(xiàn)、配置及服務(wù)管理平臺貢獻給開源社區(qū),通過打造 Dubbo Nacos 的經(jīng)典組合進一步釋放 Dubbo 在云原生及 Service Mesh 時代中,在大規(guī)模微服務(wù)治理、流量治理、服務(wù)集成與服務(wù)共享等服務(wù)平臺能力建設(shè)上的威力,同時 Nacos 會非常關(guān)注對主流開源社區(qū),如 Spring Cloud 和 Kubernetes 云原生體系的無縫對接與支持”。
該項目目前的計劃是通過未來 6~8 個月的持續(xù)努力,release 的 0.8 版本開始達到生產(chǎn)可用的狀態(tài),同時計劃堅持社區(qū)化發(fā)展,在未來一年里計劃吸收至少 10 名外部 Committer 和 5 個外部 PMC.
2 什么是 Nacos /nɑ:k??s/?
Nacos 是阿里巴巴的新開源項目,Nacos 發(fā)布 v0.1.0 版本的同時也發(fā)布了中英雙語的官網(wǎng),從其官網(wǎng)描述來看,其核心定位是 “一個更易于幫助構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn)、配置和服務(wù)管理平臺”。
Nacos 有三大主要功能:
-
服務(wù)發(fā)現(xiàn)與服務(wù)管理
在采用以“服務(wù) (Service)”為中心的諸如微服務(wù)及云原生方式的現(xiàn)代應(yīng)用架構(gòu)時,動態(tài)服務(wù)發(fā)現(xiàn)至關(guān)重要。 Nacos 同時支持基于 DNS 和基于 RPC(如 Dubbo/gRPC)的服務(wù)發(fā)現(xiàn),并為您提供服務(wù)的實時的健康檢查以防止將請求發(fā)送給不健康的主機,基于 Nacos 您也可以更方便的實現(xiàn)服務(wù)斷路器。Nacos 提供的強大的服務(wù)的元數(shù)據(jù)管理,路由及流量管理策略也能夠幫助您更好的構(gòu)建更強壯的微服務(wù)平臺。
-
動態(tài)配置管理
動態(tài)配置服務(wù)允許您在所有環(huán)境中以集中和動態(tài)的方式管理所有應(yīng)用程序或服務(wù)的配置。動態(tài)配置消除了配置更新時重新部署應(yīng)用程序和服務(wù)的需要。可以更方便的幫助您實現(xiàn)無狀態(tài)服務(wù),更輕松地實現(xiàn)按需彈性擴展服務(wù)實例。
-
動態(tài) DNS 服務(wù)
支持權(quán)重路由的動態(tài) DNS 服務(wù)使您可以更輕松地在數(shù)據(jù)中心內(nèi)的生產(chǎn)環(huán)境中實施中間層負載平衡,靈活的路由策略,流量控制和簡單的 DNS 解析服務(wù),動態(tài) DNS 服務(wù)也幫你更容易的實現(xiàn)以 DNS 協(xié)議為基礎(chǔ)的服務(wù)發(fā)現(xiàn),以消除耦合到廠商私有服務(wù)發(fā)現(xiàn) API 上的風(fēng)險。
3 為什么開源 Nacos
阿里巴巴為什么選擇這么一個時間點開源 Nacos,其背后的思考是什么,在更早的線下技術(shù)活動中,@坤宇也給出了詳細的解讀,坤宇表示主要基于以下幾點:
-
圍繞著 Service 為中心的分布式基礎(chǔ)設(shè)施正在變的越來越重要
世界正在變的更快,創(chuàng)新和市場競爭的節(jié)奏正在變得愈發(fā)劇烈,如何超快速實現(xiàn)業(yè)務(wù)增長成為商業(yè)競爭的主旋律,幾乎一夜之間共享單車就火遍全國,不到幾年滴滴就改變了我們的打車方式,騰訊三班倒實現(xiàn)全民“吃雞”,現(xiàn)在企業(yè)估值在從 0 到 100 億所需的時間越來越短,而企業(yè)的平均壽命從標普的數(shù)據(jù)來看卻從上世紀 60 年代的 60 年下降到了今天的 15 年,一切都表示創(chuàng)新和競爭的速度和烈度在加強。
另一方面技術(shù)基礎(chǔ)設(shè)施的敏捷和有效性在商業(yè)成功的要素上占據(jù)的比重越來越大,云計算在資源和服務(wù)交付模式上的變革,帶來了效率的革命性提升,帶來了更敏捷的基礎(chǔ)設(shè)施(創(chuàng)業(yè)不用再買機器并找機房托管,從以前的半年準備周期到現(xiàn)在在云上的小時級創(chuàng)建全套服務(wù)),而在應(yīng)用架構(gòu)層面,微服務(wù)架構(gòu)模式帶來的靈活性、韌勁,快速組合和聚合原子服務(wù)從而創(chuàng)新,給業(yè)務(wù)快速創(chuàng)新和試錯提供了條件,已經(jīng)被越來越多的應(yīng)用平臺證明其有效性,技術(shù)基礎(chǔ)設(shè)施的更敏捷,給商業(yè)的敏捷和商業(yè)的競爭優(yōu)勢提供了基礎(chǔ)。
在今天,無論是云計算,微服務(wù)還是圍繞 Kubernetes 為中心的云原生,都在強調(diào)以“服務(wù)”為內(nèi)核的應(yīng)用架構(gòu)模式,如果說 15 年前我們在討論“一切皆是對象”構(gòu)建單體系統(tǒng),那么今天我們就是在談?wù)摗耙磺薪允欠?wù)”,10 年前淘寶服務(wù)化改造順應(yīng)了這種趨勢,8 年前微服務(wù)架構(gòu)思想也順應(yīng)了這個趨勢,今天面向“服務(wù)”的各種分布式基礎(chǔ)設(shè)施正在變得越來越重要,站在阿里巴巴 10 年的服務(wù)化發(fā)展經(jīng)驗上看,在大規(guī)模服務(wù)發(fā)現(xiàn)和服務(wù)治理和服務(wù)共享領(lǐng)域現(xiàn)有的開源解決方案是不是都已經(jīng)非常完美了呢?根據(jù)阿里巴巴服務(wù)化走過的這些年的生產(chǎn)經(jīng)驗來看,我們覺得并沒有。
-
阿里巴巴在 “共享服務(wù)體系” 建設(shè)上的經(jīng)驗可以在各個行業(yè)大規(guī)模復(fù)用
阿里巴巴中臺理念和體系,與云原生在精神的“道”上完全契合,即“厚技術(shù)平臺,薄應(yīng)用” 支持業(yè)務(wù)的快速創(chuàng)新與試錯,從而贏得市場,中臺體系倡導(dǎo)雙引擎架構(gòu),略過“大數(shù)據(jù)”不談,但看業(yè)務(wù)中臺,就是一個大的以“服務(wù)”為中心的共享服務(wù)平臺,在線服務(wù)沉淀業(yè)務(wù)數(shù)據(jù),同步到大數(shù)據(jù)平臺計算和挖掘,大數(shù)據(jù)平臺則通過數(shù)據(jù)回饋,指導(dǎo)業(yè)務(wù)及服務(wù)的創(chuàng)新,支成可沉淀和可共享“服務(wù)”體系的服務(wù)注冊與服務(wù)治理平臺是這個體系的關(guān)鍵要素之一。
-
“服務(wù)治理,服務(wù)沉淀、服務(wù)共享和服務(wù)的可持續(xù)發(fā)展”是“共享服務(wù)體系”的核心價值主張
支持創(chuàng)新從小苗長成參天大樹,服務(wù)平臺不斷演進,這一切需要一個強大的服務(wù)平臺和服務(wù)基礎(chǔ)設(shè)施的支撐。
-
阿里巴巴將通過 Dubbo Nacos 以及一系列開源項目打造服務(wù)發(fā)現(xiàn)、服務(wù)及流量管理、服務(wù)共享平臺
4 Nacos 與 主流開源生態(tài)的關(guān)系
Nacos 不會是個封閉的體系,除了對于阿里開源生態(tài)體系如 Dubbo 等自身的支持,也非常強調(diào)融入其它的開源生態(tài),這里就包括 Java 的微服務(wù)生態(tài)體系 Spring Cloud,Kubernetes/CNCF 云原生生態(tài)體系,正如 Nacos 的未來全景圖展示的那樣
-
Dubbo Nacos, 專為 Dubbo 而生的注冊中心與配置中心
在阿里巴巴生產(chǎn)環(huán)境上,Dubbo 和 Nacos 天然就是長在一起的,因為 Nacos 的缺失,傳統(tǒng)的注冊中心解決方案讓 Dubbo 在服務(wù)治理、流量治理、服務(wù)運營和管理等方面的威力被限制和削弱了,Nacos 的開源和開放會在采用 Dubbo 的用戶環(huán)境中釋放這些威力
-
Nacos 會完全兼容 Spring Cloud
Nacos 會無縫支持 Spring Cloud,為 Spring Cloud 用戶其提供更簡便的配置中心和注冊中心的解決方案,使用 Nacos 不用再僅僅為服務(wù)和配置就需要在生產(chǎn)上 hold 住 Eureka,Spring Cloud Config Server,Git,RabbitMQ/Kafka 起碼四個開源產(chǎn)品。
-
Nacos 支持 Kubernetes DNS-based Service Discovery
在演講中坤宇也表示,阿里巴巴這么多年在 VIPServer DNS-based Service Discovery 上的實踐證明,在云原生時代,應(yīng)用會更關(guān)注與基礎(chǔ)設(shè)施的解耦合、多語言乃至多云的訴求,服務(wù)發(fā)現(xiàn)的未來一定是基于標準的 DNS 協(xié)議做,而不是像 Eureka 或者像 ZooKeeper 這樣的私有 API 或者協(xié)議做, 同時在云上,在服務(wù)發(fā)現(xiàn)場景中,注冊中心更關(guān)注的是可用性而不是數(shù)據(jù)一致性,所以 Nacos 會首推 DNS-based Servcie Discovery,并優(yōu)先關(guān)注可用性,而這也正是 Nacos 可以無縫融合進 Kubernetes 服務(wù)發(fā)現(xiàn)體系的原因所在
-
Nacos 會填補 Spring Cloud 體系與 Kubernetes 體系的鴻溝
未來會有越來越多 java 生態(tài)的用戶會選擇 Kubernetes Spring Cloud 組合,但不幸的是,在服務(wù)發(fā)現(xiàn)和配置管理的解決方案上,這 2 個體系都采用了完全不同的方案,這給同時采用 2 個體系的用戶在注冊中心和配置中心的需求上帶來了非常大的不必要的復(fù)雜性。Nacos 會嘗試填補 2 者的鴻溝,以便在 2 套體系下可以采用同一套服務(wù)發(fā)現(xiàn)和配置管理的解決方案,這將大大的簡化使用和維護的成本。
-
Nacos 與 Service Mesh
5 Nacos v0.1.0 特性預(yù)覽
-
特性預(yù)覽
相較于 @坤宇 6 月份對 Nacos v1.0 版本的部分特性給的整體預(yù)覽
Nacos v0.1.0 還處于剛起步階段,從 CHANGELOG.md 看
Nacos v0.1.0 這個版本主要是發(fā)布了基本的 Server 端代碼, OpenAPI 以及 JavaSDK.
-
快速開始
從 Nacos 的快速開始來看,Nacos 確實是極易上手,幾乎免安裝,只需要簡單的解壓包, 啟動 server 即可
核心的服務(wù)注冊 & 發(fā)現(xiàn),配置管理的 Demo API
也非常簡單和直白:
從 Nacos 的文檔 (https://nacos.io/#/docs/architecture.md?lang=en-us) 來看,在部署形態(tài)上,Nacos 會支持多種部署形態(tài),包括注冊中心與配置中心的分離部署,同時在阿里云上提供 Nacos 相應(yīng)商業(yè)化版本的免費的 SaaS 化服務(wù),可以直接在阿里云上開通賬戶免費體驗 Nacos 對應(yīng)的商業(yè)產(chǎn)品,在開源與商業(yè)化版本差別上,商業(yè)化的 ACM (https://www.aliyun.com/product/acm) 以及 EDAS ANS (https://www.aliyun.com/product/edas) 更強調(diào)與阿里云其它云服務(wù)以及其它 Aliware PaaS 的商業(yè)產(chǎn)品的集成體驗以及提供商業(yè)服務(wù)。
6 Nacos 的主要產(chǎn)品里程碑及計劃
Nacos v0.8.0 – Production Ready Version
在 Nacos 社區(qū) RoadMap 文檔 (https://nacos.io/#/docs/roadmap.md?lang=en-us) 中,也大概公布了 Nacos 后續(xù)的 1.0 及 2.0 的主要里程碑和版本研發(fā)計劃, 同時特別強調(diào)了 Nacos v0.8.0 Production Ready 之前不建議在生產(chǎn)上大規(guī)模使用。
We plan to make Nacos available for production from Nacos 0.8.0. Prior to this release, we recommend that you use it only in development and test environments.
Our current plan is to strive to make Nacos production ready in the 6-8 months. The plan might be adjusted due to various factors, including the priority adjustment according to the voice of the community, but the overall plan is that it should not take longer than one year.
看來因為 Nacos 是脫胎于阿里巴巴的生產(chǎn)代碼,整體體系可能非常龐雜,在代碼梳理、重構(gòu)和剝離與內(nèi)部的耦合上是一個漸進的過程,Nacos 整體研發(fā)計劃是在未來 6-8 個月將達到生產(chǎn)可用的狀態(tài)。
7 社區(qū)化發(fā)展,歡迎加入并貢獻社區(qū)
DISS is cheap, show me your hand 比吐槽更重要的是搭把手,參與社區(qū)一起發(fā)展 Nacos
與阿里巴巴早期的開源不同,阿里巴巴新一輪的開源包括 RocketMQ,Pouch Container,Dubbo, Nacos, Sentinel 等開源產(chǎn)品更強調(diào)社區(qū)化的發(fā)展與社區(qū)的多樣性,鼓勵更多的公司和更多的開發(fā)者參與到開源項目中來,依托于社區(qū)將產(chǎn)品做得更好,同時一開始就會關(guān)注國際化,與國外同類產(chǎn)品的直面競爭。
Nacos 初步計劃,在第一年就吸收至少超過 5 名來自其它公司的 PMC, 至少 10 名的外部 Committer, 而且 Nacos 處在項目開源的初期,有大把的空間讓有想法、有熱情、有能力的開發(fā)者參與進來,如果您對 Nacos 這個開源項目感興趣,可以加入 Nacos 社區(qū)。你可以通過掃 “超哥”的微信二維碼,讓“超哥” 幫你加入 “Nacos 社區(qū)交流群” 。
8 如何貢獻 Nacos 社區(qū)?
Nacos 本身在很多方面都急需要社區(qū)的幫助,以下幾個方面都是可貢獻和共建的重點方向:
-
在未來的產(chǎn)品和生產(chǎn)計劃中使用、集成、共建 Nacos
UI 前端及視覺大牛指導(dǎo) Nacos 管控 UI 建設(shè)
提供與 Spring Cloud、Kubernetes、Service Mesh 等關(guān)聯(lián)開源體系融合與集成代碼和項目
貢獻多語言客戶端
提交需求,proposal,PR
貢獻文檔
分享自己與 Nacos 相關(guān)的故事
在 github 上 star Nacos, 鼓勵一下程序員們
今日薦文
點擊下方圖片即可閱讀
WebIDE:在瀏覽器中寫代碼的時代即將來臨?
極客時間大咖留聲機,100 位 CTO 的成長心經(jīng)
聽聽技術(shù)之外,身經(jīng)百戰(zhàn)的技術(shù)大牛們都走過的哪些路。