導航:首頁 > 源碼編譯 > nacos本地源碼啟動

nacos本地源碼啟動

發布時間:2024-03-02 23:10:56

❶ nacos原理

nacos目前是集成到spring cloud alibaba里去的,也就是在spring cloud的標准之下實現了一些東西,spring cloud自己是有一個介面,叫做ServiceRegistry,也就是服務注冊中心的概念,nacos中有一個它的實現類NacosServiceRegistry,實現了register、deregister、close、setStatus、getStatus之類的方法。

自動裝配是一個spring boot的一個概念,自動裝配的意思,其實就是說系統啟動的時候,自動裝配機制會運行,實現一些系統的初始化,自動運行,也就是系統啟動時自動去調用NacosServiceRegistry的register方法去進行服務注冊。而且除了注冊之外,還會通過schele線程池去提交一個定時調度任務,源碼如下:

this.exeutorService.schele(new BeatReactor.BeatTask(beatInfo), beatInfo.getPeriod(), TimeUnit.MILLISECONDS),這就是一個心跳機制,定時發送心跳給nacos server。

然後會訪問nacos server的open api,其實就是http介面,他有一個介面:http://31.208.59.24:8848/nacos/v1/ns/instance?serviceName=xx&ip=xx&port=xx,這么一個東西,也沒什麼特別的,這里就是訪問注冊介面罷了

nacos server那裡是基於一個ConcurrentHashMap作為注冊表來放服務信息的,直接會構造一個Service放到map里,然後對Service去addInstance添加一個實例,本質裡面就是在維護信息,同時還會建立定時檢查實例心跳的機制。最後還會基於一致性協議,比如說raft協議,去把注冊同步給其他節點。

服務發現的本質其實也是nacos server上的一個http介面,就是:http://31.208.59.24:8848/nacos/v1/ns/instance/list?serviceName=xx,就這么一個介面,然後就會啟動定時任務,每隔10s拉取一次最新的實例列表,然後服務端還會監聽他服務的狀態,有異常就會基於UDP協議反向通知客戶端這次服務異常變動。

❷ springcloud nacos1.4.1 本地運行源碼報錯,缺少entity包下的類

下載的應該不會缺少依賴,

  1. 可以重新載入一下maven項目。

  2. 查看maven配置是否正確。

  3. 查看依賴是否下載。

  4. 手動下載依賴,並載入

❸ springboot 2.4.13 無法從nacos獲取配置,但是可以注冊到nacos

springboot 2.4.13,集成了nacos,啟動後,nacos注冊中心有服務,但是,發現,配置沒有生效。於是,開啟了一段源碼查找的過程。

首先,是pom引入的nacos配置

然後,application.yml添加nacos配置

啟動後,發現注冊中心有服務,但是,服務的配置不是從nacos配置中心獲取的,而是本地的。

查找一下nacos源碼,找到nacos配置自動注入那塊兒:

然後發現,是這個NacosPropertySourceLocator實現的配置導入的

查詢源碼,可以發現,相關的配置,是通過這個方法,載入的,這個方法是總入口。

於是,嘗試加斷點,查看配置信息,看看為什麼沒有導入配置。然而,程序根本就沒有進入這個方法裡面!!!

根據介面實現,可以發現NacosPropertySourceLocator 是PropertySourceLocator的實現類,這個方法的調用執行,不是nacos自己去做的,而是通過spring去做的。

spring cloud 通過BootstrapApplicationListener,以監聽器的方式,通過監聽springboot啟動過程中的事件,通過onApplicationEvent方法處理事件,導入spring cloud相關配置。

通過加斷點,可以發現,這里的方法bootstrapEnabled()返回值是false,直接就不執行後續的載入了。

因此,需要保證bootstrapEnabled返回值是true。

查看PropertyUtils源碼,可以發現,需要配置項 spring.cloud.bootstrap.enabled=true 並且存在 org.springframework.cloud.bootstrap.marker.Marker 類的時候,spring cloud 才會去載入spring cloud的配置。

因此,pom中需要添加marker所在的組件依賴:

此時,需要在 bootstrap.yml 中添加spring cloud配置:

(至於為什麼是bootstrap.yml而不是application.yml,這又是另一個問題了)

有了上面的配置,程序啟動後,就能正常的從nacos配置中心獲取配置了。

❹ 微服務架構 | *3.5 Nacos 服務注冊與發現的源碼分析

參考資料
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服務原理與實戰》
《B站 尚矽谷 SpringCloud 框架開發教程 周陽》

為方便理解與表達,這里把 Nacos 控制台和 Nacos 注冊中心稱為 Nacos 伺服器(就是 web 界面那個),我們編寫的業務服務稱為 Nacso 客戶端;

Nacos 客戶端將自己注冊進 Nacos 伺服器。《1. 服務如何注冊進 Nacos 注冊中心》主要從 Nacos 客戶端角度解釋如何發送信息給 Nacos 伺服器;《2. Nacos 伺服器注冊服務》主要從 Nacos 伺服器角度解釋注冊原理;

《3. 客戶端查詢所有服務實例》將從服務消費者和提供者的角度,解釋服務消費者如何獲取提供者的所有實例。服務消費者和提供者都是 Nacos 的客戶端;

《4. 客戶端監聽 Nacos 伺服器以動態獲取服務實例》從消費者客戶端角度出發監聽 Nacos 伺服器,以動態獲知提供者的變化;







閱讀全文

與nacos本地源碼啟動相關的資料

熱點內容
注冊伺服器地址指什麼 瀏覽:431
文本命令行 瀏覽:95
撲克牌睡眠解壓 瀏覽:190
rc4演算法流程圖 瀏覽:159
胡蘿卜解壓方法 瀏覽:35
掃描pdf格式軟體 瀏覽:876
程序員在銀行開賬戶 瀏覽:516
android資料庫下載 瀏覽:749
中午伺服器崩潰怎麼辦 瀏覽:425
產品經理和程序員待遇 瀏覽:442
解憂程序員免費閱讀 瀏覽:109
錄像免壓縮 瀏覽:508
總結所學過的簡便演算法 瀏覽:362
南昌哪些地方需要程序員 瀏覽:761
三台伺服器配置IP地址 瀏覽:175
如何用命令方塊連續對話 瀏覽:280
win7linux共享文件夾 瀏覽:304
命令符打開本地服務 瀏覽:601
android應用程序源碼 瀏覽:705
安卓開發工程師簡歷怎麼寫 瀏覽:63