作者:於懷
Nacos 是什麼?
Nacos /nɑ:kəʊs/ 是 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,用戶也可以進行自定義。並且目前數據庫的插件已經在路上,後續還會在安全等更多方面支持可插拔的插件化能力。
Nacos 支持還能支持哪些場景
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 開源社區每一位同學!
MSE 註冊配置首購 8 折,首購 1 年及以上 7 折。MSE 雲原生網關預付費全規格享 9 折優惠。點擊此處,即享優惠!