nacos獲取配置檔案的大致過程

2021-09-10 05:35:19 字數 1526 閱讀 4091

一、spring 體系相關類(主要借助spring的api,自動注入配置資訊)

com.alibaba.nacos.spring.core.env.abstractnacospropertysourcebuilder

com.alibaba.nacos.spring.core.env.nacospropertysourcepostprocessor

com.alibaba.nacos.spring.util.config.nacosconfigloader

主要是將configservice(實現類nacosconfigservice)獲取的配置資訊新增到environment.getpropertysources()

二、配置

1、獲取配置檔案:

獲取配置檔案由configservice的getconfig介面提供,實現類的核心流程就是根據配置的nacos位址使用,當然會有一些優先順序之類的處理,網路請求由com.alibaba.nacos.client.config.impl.clientworker的getserverconfig處理(getserverconfig->httpagent(metricshttpagent)->httpagent(serverhttpagent)->http******client->httpurlconnection);

2、監聽配置更新:

拉取資料其實是在nacosconfigservice建立的時候就開始的,nacosconfigservice建立的時候,nacos建立clientworker成員變數:

worker = new clientworker(agent, configfilterchainmanager);
然後在worker的建構函式啟動time task:

executor.schedulewithfixeddelay(new runnable()  catch (throwable e) 

}}, 1l, 10l, timeunit.milliseconds);

executorservice.execute(new longpollingrunnable(i));

listchangedgroupkeys = checkupdatedataids(cachedatas, ininitializingcachelist);

checkupdateconfigstr(sb.tostring(), isinitializingcachelist)

checkupdateconfigstr最終會呼叫http請求,http請求將本地配置檔案的md5計算後傳給nacos伺服器,伺服器根據md5

計算返回變動了的配置檔案的列表,client在根據這個結果拉取配置檔案,nacos的配置監聽使用非同步 servlet 技術,預設在配置相同的情況下,會等待30秒,不然會立刻獲取配置資訊

com.alibaba.nacos.config.server.controller.configservletinner
nacos在這裡處理非同步返回的結果

Nacos配置檔案覆蓋問題

近期新專案上cloud alibaba架構 用的註冊和配置中心就是用的nacos nacos作為配置中心給我的感覺也是不是很好用,大概配置中心都不是很好用吧,可能用多了會好點 首先說一下遇到的問題,nacos有幾個範圍性的概念 我就不說了 1.首先是命名空間隔離,也就是區分環境 2.group組的概...

Apache 主配置檔案大致解析

1.軟體的安裝 yum install httpd2.開啟服務 3.檢視埠是否開啟 netstat ntl4.解析配置檔案 servertokens prod full 該引數設定http頭部返回的apache版本資訊 引數 prod 僅軟體名稱,例如 apache major 包括主版本號,例如 ...

Nacos配置中心 多配置檔案載入

新增配置,載入多個配置檔案 spring.cloud.nacos.config.server addr 127.0.0.1 8848 spring.profiles.active dev 該配置影響統一配置中心中的dataid,之前已經配置過 spring.cloud.nacos.config.na...