我們總結了 3 大使用建議,並首次公開 Nacos3.0 規劃圖 | Nacos 開源 4 週年
作者:於懷
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 不僅僅維持高的專案活躍度,而且專案關注度和活躍度還在逐步提高。
同時阿里巴巴在國內企業中開源影響力排行第一,在《2022 中國開源發展藍皮書》中介紹:“阿里巴巴是國內參與開源技術生態建設的企業典範。自 2011 年至今,阿里累計開源專案超過 3000 個,代表性的專案包括龍蜥作業系統、Apache RocketMQ、Apache Dubbo、Spring Cloud Alibaba、 Nacos、Seata、PolarDB-X、PolarDB for PostgreSQL 等”。
Nacos 是阿里巴巴微服務領域開源專案的活躍度排行第一,也得益於開源協作模式,並且在 Nacos 中有大量國內外知名公司的核心貢獻者,其中也包含就職在騰訊、華為、小米等等知名企業的同學,也正是社群整體的貢獻者和使用者在幫助 Nacos 成長,讓 Nacos 逐步完善生態,支援幾乎所有主流語言,整合更多開源生態,也正是使用者和社群貢獻者讓 Nacos 為企業數字化轉型首選產品。
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 的客戶端。
在基本能力上,Nacos 2.x 一致性協議複用了阿里在該領域最佳實踐,以長連線為基礎,減低通訊損耗,基於 Distro 協議原有協議進行升級,在儲存模型、保活模型上進行了重構,並且用推送機制代替了之前的輪訓機制,進一步提升了產品的高可用以及穩定性,整體也複用了阿里百萬例項的基礎模型,在 CAP 理論基礎上,根據場景來去選擇最適合的協議,貼合場景來平衡一致性、高可用以及分割槽容災,做到服務發現以及配置管理每個場景下,都做到穩定性、高可用、高效能的保障。
在拓展能力上,Nacos 2.x 版本開始支援外掛化能力,基於外掛化是更方便的支援使用者各種場景,很多使用者公司內部有完善的體系基於 Nacos 可以簡單的改造就可以融合進入,在鑑權、配置加解密場景都可以做到按照使用者需求進行定製,並且給出預設的開源實現供使用者選擇,加解密為例,開源給出的預設實現是基於 AES,使用者也可以進行自定義。並且目前資料庫的外掛已經在路上,後續還會在安全等更多方面支援可插拔的外掛化能力。
Naocs 支援還能支援哪些場景
Nacos 基本核心能力是面向於整體分散式的服務註冊與發現,以及分散式節點配置管理,使用領域可以說是非常廣泛的,比較常用的包含,微服務領域、高可用領域、內容領域以及資料庫領域等,目前在微服務領域 Nacos 基本能力使用最廣,微服務領域定位在一站式解決了使用者應用的定址、流量、配置場景服務平臺,在高可用領域 Nacos 積累了大量的經驗,可以實現大量降級、容災、多活的高可用場景,也可以支援內容分發以及資料庫分庫分表、主備切換等場景的基礎能力,可以說分散式的場景下,基本都可以跟 Nacos 進行構建,也幫助業務後續拓展留足了準備。
Nacos 排查問題最佳實踐
註冊配置中心在分散式節點互動中起著重要的作用,在業務分散式場景出現問題的時候需要快速進行診斷,判斷是否是註冊配置中心出現了問題,還是業務層的問題。
在註冊中心中,服務發現是業務排查問題第一優先順序需要定位的,服務發現具體對應的就是服務地址資料是否同步到了業務節點上,那在 Nacos 場景上,推送記錄就是最關鍵的一個特效能力,這部分能力可以通過 Nacos 日誌查詢到,目前 Nacos 社群已經開始計劃設計事件中心來支撐這部分能力,為了更好的演示,這裡也通過阿里雲微服務引擎 MSE 展現一下白屏化的推送軌跡能力,使用者可以通過服務名稱或者客戶端 IP,進行查詢變更的時間以及變更的內容,就可以快速明確當前註冊中心是否存在問題,並且能幫住業務進一步定位具體原因。
在配置中心鏈路,同樣存在第一時間定位的問題,這裡也通過阿里雲微服務引擎 MSE 的最佳實踐,推送軌跡能力展現排查的思路,可以通過配置名稱或者訂閱者客戶端 IP 進行查詢配置的變更時間,以及推送時間,以及推送內容 MD5 值進行匹配。
並且在分散式配置管理領域,通過補全推送軌跡能力,加上已經支援的歷史版本查詢能力,可以幫助業務全流程的觀測配置的生命週期。
關於註冊配置中心排查問題的思路上,總結是兩個重點,一是資料變更確認,二是快速確定關係並且進行恢復。大多數場景如果是業務變更引起的,一定要第一時間進行回顧變更,避免給業務帶來問題。在穩定性要求比較高的領域,建議業務體系上面向 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 的貢獻。
參加開源建議
最後部分整合我個人意見,向沒有參與過開源的同學給出一些參與開源的建議,首先我認為開源對於開發者以及社群貢獻都是非常有益的,如果你有時間並且也想參與開源,那我建議你從以下四個步驟進行深入:
第一步找到自己感興趣的方向,這個點比較重要,會影響你後續貢獻的持久程度,當然這個也是在逐步摸索中的,不過如果對於方向確認好後,應對的產品列表選擇就會比較明朗了,在這個步驟考慮興趣是我首要建議的,其次我建議,也可以考慮當前專案一些詳細資訊,重點考慮是否能幫助個人把價值的放大,使用範圍越廣的專案就越能讓你的貢獻在社會價值放大,也正向會提高成就感。
第二步是熟悉專案和產品,找到了方向和專案之後,就可以開始著手熟悉當前產品的細節,熟悉當前專案的運營機制,以及面向於產品開始接觸對應領域問題,領域問題最後會沉澱成為你對這個領域的經驗。
第三步其實就可以貢獻開源了,這一個步驟其實面向於前兩步驟是可以適當提前並行做,關鍵是從小問題入手做起,這樣可以幫助你在前兩個步驟中更快的找到感覺,也能從小問題開始幫助他人,在社群中建立個人影響力。
第四步其實是水到渠成的,面向於活躍的社群,當你足夠熟悉該領域該產品之後,有了足夠的貢獻,就會在開源中逐步主導社群的決策,也能在社群中幫助更多的人發展共建。
上邊是對個人貢獻開源產品流程建議,適用於大多數開源專案的貢獻。額外在開源上我覺得 Nacos 是不錯的選擇,首先產品定位是比較基礎,能幫助開發者沉澱更通用的領域能力,社群活躍度能保持全國第六,並且在微服務領域已經被廣泛使用,能幫助個人很好的放大價值。
再就是 Nacos 的熟悉產品也會比較簡單,Nacos.io 官網可以幫助你快速入門,也有 Nacos 電子書免費下載幫助你深度瞭解 Nacos 架構設計。貢獻開源上可以從 Nacos 社群倉庫中 good first issues 開始,跟著產品演進的方向,從小事開始在社群中發聲,最後在 Nacos 社群有很多核心模組需要主導者,並且在社群中成為核心貢獻者有社群投票權利,主導未來 Nacos 發展方向,並且作為社群核心成員,會有很多線上線下分享的機會,幫助個人以及企業建立更多社會影響力。總之在開源領域其實只要你願意熟悉,一定會有所收穫,祝願每一位開發者在自己喜歡的領域能做出你想要的產品。最後感謝 Nacos 開源社群每一位同學!
- Serverless 奇點已來,下一個十年將駛向何方?
- 阿里巴巴重磅開源雲原生閘道器: Higress
- 我們總結了 3 大使用建議,並首次公開 Nacos3.0 規劃圖 | Nacos 開源 4 週年
- SAE 助力貴州酒店集團從容支撐貴州特產搶購
- 甩掉容量規劃炸彈:用 AHPA 實現 Kubernetes 智慧彈性伸縮
- 聊聊降本提效這件事兒
- 主流定時任務解決方案全橫評
- 通過Jenkins構建CI/CD實現全鏈路灰度
- 一站式動態多環境建設案例
- Proxyless Mesh 在 Dubbo 中的實踐
- ChaosBlade Java 場景效能優化,那些你不知道的事
- 新零售標杆 SKG 全面擁抱 Serverless,實現敏捷交付
- 「技術人生」第9篇:如何設定業務目標
- 面向物件分析與設計的底層邏輯
- 微服務治理熱門技術揭祕:動態讀寫分離
- Helm Chart 多環境、多叢集交付實踐,透視資源拓撲和差異
- 主流定時任務解決方案全橫評
- 重拾面向物件軟體設計
- 一個開發者自述:我是如何設計針對冷熱讀寫場景的 RocketMQ 儲存系統
- KubeVela 1.4:讓應用交付更安全、上手更簡單、過程更透明