我們總結了 3 大使用建議,並首次公開 Nacos3.0 規劃圖 | Nacos 開源 4 週年

語言: CN / TW / HK

作者:於懷

Nacos 是什麼

Nacos 是 Dynamic Naming and Configuration-Service 的首字母簡稱,定位於一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平臺。從 2018 年 7 月開始宣佈開源以來,已經走過了第四個年頭,在這四年裡,備受廣大開源使用者歡迎,共收穫 23.3K 的 star 數10.3K 的 Fork 數,在開源中國發布的 2021 年度 OSC 中國開源專案評選中,Nacos 被評為雲原生領域人氣指數 Top5 的專案,釋出電子書《Nacos 架構與原理》6w+閱讀量,2w 下載量,釋出半年的時間裡在阿里雲藏經閣歷史下載榜前十。Nacos 在社群共同的建設下不斷成長,逐步的開始幫助使用者解決實際問題,助力企業數字化轉型,目前已經廣泛的使用在國內的公司中,根據微服務領域調查問卷,Nacos 在註冊配置中心領域已經成為國內首選,佔有 50%+國內市場份額,被頭部企業廣泛使用!

《2022 中國開源發展藍皮書》由中國開源軟體推進聯盟(COPU)牽頭,聯合中國開發者網路(CSDN)、北京開源創新委員會、開放原子開源基金會、中國電子資訊產業發展研究院、中科院軟體研究所等 85 家企業及行業機構、120 多位開源專家和志願者共同協作編撰完成,旨在全面展現當前中國開源發展的全景圖,為國家政府相關管理部門、科研院所、科技企業以及開源從業者提供更多的理論參考和資料支撐,進一步助力我國開源生態的蓬勃發展。 

根據最近剛釋出的《2022 中國開源發展藍皮書》報告中顯示,Github 中國專案活躍度 TOP 20,Nacos 排名全國第六,作為基礎型別雲原生中介軟體,能有如此活躍度是非常不容易的,在上一年度《2021 中國開源發展藍皮書》中,Nacos 排名全國第十,也表現 Nacos 不僅僅維持高的專案活躍度,而且專案關注度和活躍度還在逐步提高。

1.png

2.png

同時阿里巴巴在國內企業中開源影響力排行第一,在《2022 中國開源發展藍皮書》中介紹:“阿里巴巴是國內參與開源技術生態建設的企業典範。自 2011 年至今,阿里累計開源專案超過 3000 個,代表性的專案包括龍蜥作業系統、Apache RocketMQ、Apache Dubbo、Spring Cloud Alibaba、 Nacos、Seata、PolarDB-X、PolarDB for PostgreSQL 等”。

Nacos 是阿里巴巴微服務領域開源專案的活躍度排行第一,也得益於開源協作模式,並且在 Nacos 中有大量國內外知名公司的核心貢獻者,其中也包含就職在騰訊、華為、小米等等知名企業的同學,也正是社群整體的貢獻者和使用者在幫助 Nacos 成長,讓 Nacos 逐步完善生態,支援幾乎所有主流語言,整合更多開源生態,也正是使用者和社群貢獻者讓 Nacos 為企業數字化轉型首選產品。

3.png

Nacos 使用上的 3 點建議

Nacos 版本選擇

Nacos 經過 4 年的發展,目前在大版本演進上已經到了第二代 Nacos 架構,即 Nacos 2.x 版本,Nacos 2.x 版本是基於 Nacos 1.x 中使用者反饋使用習慣以及產品演進方向而構建的產品能力,中間包含了比如一致性演算法升級,對效能的 10 倍提升,以及支援外掛化來滿足社群的定製訴求。並且保障了很好的相容性,在服務能力上 Nacos 2.x 是完全相容 Nacos 1.x 的協議,也就是 Nacos 2.x 服務端是完全相容 Nacos 1.x 的客戶端。

4.png

在基本能力上,Nacos 2.x 一致性協議複用了阿里在該領域最佳實踐,以長連線為基礎,減低通訊損耗,基於 Distro 協議原有協議進行升級,在儲存模型、保活模型上進行了重構,並且用推送機制代替了之前的輪訓機制,進一步提升了產品的高可用以及穩定性,整體也複用了阿里百萬例項的基礎模型,在 CAP 理論基礎上,根據場景來去選擇最適合的協議,貼合場景來平衡一致性、高可用以及分割槽容災,做到服務發現以及配置管理每個場景下,都做到穩定性、高可用、高效能的保障。

5.png

在拓展能力上,Nacos 2.x 版本開始支援外掛化能力,基於外掛化是更方便的支援使用者各種場景,很多使用者公司內部有完善的體系基於 Nacos 可以簡單的改造就可以融合進入,在鑑權、配置加解密場景都可以做到按照使用者需求進行定製,並且給出預設的開源實現供使用者選擇,加解密為例,開源給出的預設實現是基於 AES,使用者也可以進行自定義。並且目前資料庫的外掛已經在路上,後續還會在安全等更多方面支援可插拔的外掛化能力。

6.png

Naocs 支援還能支援哪些場景

Nacos 基本核心能力是面向於整體分散式的服務註冊與發現,以及分散式節點配置管理,使用領域可以說是非常廣泛的,比較常用的包含,微服務領域、高可用領域、內容領域以及資料庫領域等,目前在微服務領域 Nacos 基本能力使用最廣,微服務領域定位在一站式解決了使用者應用的定址、流量、配置場景服務平臺,在高可用領域 Nacos 積累了大量的經驗,可以實現大量降級、容災、多活的高可用場景,也可以支援內容分發以及資料庫分庫分表、主備切換等場景的基礎能力,可以說分散式的場景下,基本都可以跟 Nacos 進行構建,也幫助業務後續拓展留足了準備。

7.png

Nacos 排查問題最佳實踐

註冊配置中心在分散式節點互動中起著重要的作用,在業務分散式場景出現問題的時候需要快速進行診斷,判斷是否是註冊配置中心出現了問題,還是業務層的問題。

8.png

在註冊中心中,服務發現是業務排查問題第一優先順序需要定位的,服務發現具體對應的就是服務地址資料是否同步到了業務節點上,那在 Nacos 場景上,推送記錄就是最關鍵的一個特效能力,這部分能力可以通過 Nacos 日誌查詢到,目前 Nacos 社群已經開始計劃設計事件中心來支撐這部分能力,為了更好的演示,這裡也通過阿里雲微服務引擎 MSE 展現一下白屏化的推送軌跡能力,使用者可以通過服務名稱或者客戶端 IP,進行查詢變更的時間以及變更的內容,就可以快速明確當前註冊中心是否存在問題,並且能幫住業務進一步定位具體原因。

9.png

在配置中心鏈路,同樣存在第一時間定位的問題,這裡也通過阿里雲微服務引擎 MSE 的最佳實踐,推送軌跡能力展現排查的思路,可以通過配置名稱或者訂閱者客戶端 IP 進行查詢配置的變更時間,以及推送時間,以及推送內容 MD5 值進行匹配。

10.png

並且在分散式配置管理領域,通過補全推送軌跡能力,加上已經支援的歷史版本查詢能力,可以幫助業務全流程的觀測配置的生命週期。

11.png

關於註冊配置中心排查問題的思路上,總結是兩個重點,一是資料變更確認,二是快速確定關係並且進行恢復。大多數場景如果是業務變更引起的,一定要第一時間進行回顧變更,避免給業務帶來問題。在穩定性要求比較高的領域,建議業務體系上面向 1-5-10(故障 1 分鐘發現,5 分鐘上線處理,10 分鐘恢復)建設穩定性,這部分也是比較通用的能力建設,這裡就不進行詳細拓展,後續有機會可以單獨聊一下。

Nacos 規劃

Nacos 已經經歷了兩個重要階段,初創期和高速發展期,目前正處於被大規模使用的 Nacos 的第三階段是成為基礎設施,需要面向於基礎設施進行演進,幫助企業數字化轉型,深度的擁抱各個領域內的場景,並且更深度的幫助企業解決問題。Nacos 社群目前面向於第三階段,開始籌備 Nacos 3.0 架構設計進行規劃討論,並且逐步開始進行落地。

目前針對 Nacos 3.0 的建設規劃大圖主要包含三部分,第一部分是開源品牌和社群的升級,主要是面向於社群建立更緊密的聯絡。第二部分是面向更多生態進行深度融合,包含 K8s 資料整合、以及多生態資料打通,第三部分是最基礎的部分,產品能力升級,基於 Nacos2.x 的協議進行增強,並且支援統一控制面、多資料中心等基礎能力,用於支撐 Nacos 3.0 生態建設以及品牌升級。

目前 Nacos 3.0 部分已經隨著社群核心貢獻者開展中,大多數還在規劃階段,後續會通過 Github issues 進行開放,隨之會打上 Nacos 3.0 的標籤,歡迎大家進行領取一起參與到 Nacos 3.0 的貢獻。

12.png

參加開源建議

最後部分整合我個人意見,向沒有參與過開源的同學給出一些參與開源的建議,首先我認為開源對於開發者以及社群貢獻都是非常有益的,如果你有時間並且也想參與開源,那我建議你從以下四個步驟進行深入:

第一步找到自己感興趣的方向,這個點比較重要,會影響你後續貢獻的持久程度,當然這個也是在逐步摸索中的,不過如果對於方向確認好後,應對的產品列表選擇就會比較明朗了,在這個步驟考慮興趣是我首要建議的,其次我建議,也可以考慮當前專案一些詳細資訊,重點考慮是否能幫助個人把價值的放大,使用範圍越廣的專案就越能讓你的貢獻在社會價值放大,也正向會提高成就感。

第二步是熟悉專案和產品,找到了方向和專案之後,就可以開始著手熟悉當前產品的細節,熟悉當前專案的運營機制,以及面向於產品開始接觸對應領域問題,領域問題最後會沉澱成為你對這個領域的經驗。

第三步其實就可以貢獻開源了,這一個步驟其實面向於前兩步驟是可以適當提前並行做,關鍵是從小問題入手做起,這樣可以幫助你在前兩個步驟中更快的找到感覺,也能從小問題開始幫助他人,在社群中建立個人影響力。

第四步其實是水到渠成的,面向於活躍的社群,當你足夠熟悉該領域該產品之後,有了足夠的貢獻,就會在開源中逐步主導社群的決策,也能在社群中幫助更多的人發展共建。

13.png

上邊是對個人貢獻開源產品流程建議,適用於大多數開源專案的貢獻。額外在開源上我覺得 Nacos 是不錯的選擇,首先產品定位是比較基礎,能幫助開發者沉澱更通用的領域能力,社群活躍度能保持全國第六,並且在微服務領域已經被廣泛使用,能幫助個人很好的放大價值。

再就是 Nacos 的熟悉產品也會比較簡單,Nacos.io 官網可以幫助你快速入門,也有 Nacos 電子書免費下載幫助你深度瞭解 Nacos 架構設計。貢獻開源上可以從 Nacos 社群倉庫中 good first issues 開始,跟著產品演進的方向,從小事開始在社群中發聲,最後在 Nacos 社群有很多核心模組需要主導者,並且在社群中成為核心貢獻者有社群投票權利,主導未來 Nacos 發展方向,並且作為社群核心成員,會有很多線上線下分享的機會,幫助個人以及企業建立更多社會影響力。總之在開源領域其實只要你願意熟悉,一定會有所收穫,祝願每一位開發者在自己喜歡的領域能做出你想要的產品。最後感謝 Nacos 開源社群每一位同學!