新聞中心
Nacos整合了注冊中心和配置中心,使用起來非常方便,這篇文章主要介紹Nacos配置中心的使用。

為南關(guān)等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及南關(guān)網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、做網(wǎng)站、南關(guān)網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
新建配置
啟動Nacos服務(wù)后,進(jìn)入注冊中心配置頁面,如下圖:
點擊上圖中紅框里面的加號,進(jìn)入新建配置頁面,如下圖:
上圖Data ID的完整格式如下:
- ${prefix}-${spring.profiles.active}.${file-extension}
說明如下:
- prefix:默認(rèn)是spring.application.name的值,可以通過配置項 spring.cloud.nacos.config.prefix在配置文件中配置。
- spring.profiles.active即為當(dāng)前環(huán)境對應(yīng)的profile。
當(dāng) spring.profiles.active 為空時,對應(yīng)的連接符-也將不存在,dataId的拼接格式變成 {file-extension}
file-exetension 為配置內(nèi)容的文件格式,目前只支持properties和yaml類型,可以通過配置項 spring.cloud.nacos.config.file-extension在配置文件中配置。
這里我創(chuàng)建一個Data ID,內(nèi)容如下圖:
這里使用的spring.profiles.active是dev,bootstrap.properties的配置如下:
- spring.application.name=nacos-producer
- spring.cloud.nacos.config.file-extension=properties
增加下面這個Controller類進(jìn)行測試:
- @Controller
- @RequestMapping("config")
- @RefreshScope
- public class ConfigController {
- @Value("${useLocalCache}")
- private boolean useLocalCache;
- @RequestMapping(value = "/get", method = GET)
- @ResponseBody
- public boolean get() {
- return useLocalCache;
- }
- }
在瀏覽器輸入下面的URL后輸出 true,更改之后輸出也會跟著變化:
- http://localhost:8083/config/get
@RefreshScope這個注解可以讓應(yīng)用動態(tài)刷新配置
多環(huán)境
實際開發(fā)中,我們會有多套環(huán)境,比如在我本地有dev、test、prod三套環(huán)境,Nacos使用namespace來進(jìn)行多環(huán)境和多租戶的隔離。Nacos默認(rèn)的namespace是public。
下面是官方對namespace的描述:
用于進(jìn)行租戶粒度的配置隔離。不同的命名空間下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用場景之一是不同環(huán)境的配置的區(qū)分隔離,例如開發(fā)測試環(huán)境和生產(chǎn)環(huán)境的資源(如配置、服務(wù))隔離等。
可以通過下圖進(jìn)入命名空間頁面:
添加一個命名空間,如下圖,命名空間ID可以不填,系統(tǒng)會自動生成:
按照上圖我創(chuàng)建了三個namespace。這樣在【配置管理】-【配置列表】中添加配置時,就會出現(xiàn)剛剛配置的namespace,如下圖:
這里我選擇 dev 進(jìn)行添加配置。如下圖,配置一個testnamespace=dev 的配置:
因為使用了namespace,就必須在配置文件bootstrap.properties中指定我們使用了哪個namespace,比如在dev環(huán)境的bootstrap.properties文件中增加如下配置:
- spring.cloud.nacos.config.namespace=ad0738cd-b595-4885-a4e5-03f547d11fa0
這時改一下測試Controller增加下面配置:
- @Controller
- @RequestMapping("config")
- @RefreshScope
- public class ConfigController {
- @Value("${testnamespace}")
- private String testnamespace;
- @RequestMapping(value = "/getEnv", method = GET)
- @ResponseBody
- public String getEnv() {
- return testnamespace;
- }
- }
瀏覽器輸入下面配置,輸出 dev,可見 namespace 配置生效了。
- http://localhost:8083/config/getEnv
業(yè)務(wù)隔離
如果不同的業(yè)務(wù)系統(tǒng)需要進(jìn)行配置隔離,比如服務(wù)A、服務(wù)B都有數(shù)據(jù)庫、redis、mq等相關(guān)配置,配置名稱是一樣的,怎么進(jìn)行隔離呢?
Nacos提供了group進(jìn)行隔離,我們看一下官方描述:
Nacos 中的一組配置集,是組織配置的維度之一。通過一個有意義的字符串(如 Buy 或 Trade )對配置集進(jìn)行分組,從而區(qū)分 Data ID 相同的配置集。當(dāng)您在 Nacos 上創(chuàng)建一個配置時,如果未填寫配置分組的名稱,則配置分組的名稱默認(rèn)采用 DEFAULT_GROUP 。配置分組的常見場景:不同的應(yīng)用或組件使用了相同的配置類型,如 database_url 配置和 MQ_topic 配置。
這里,我對serviceA和serviceB做了數(shù)據(jù)庫配置,如下圖是serviceB的配置:
配置之后serviceA和serviceB配置列表如下圖:
這時serviceA和serviceB需要在bootstrap.properties中指定group,如下是serviceA的配置:
- spring.cloud.nacos.config.group=serviceA
這時在測試Controller中增加下面代碼:
- @Controller
- @RequestMapping("config")
- @RefreshScope
- public class ConfigController {
- @Value("${spring.datasource.max-idle}")
- private String maxIdle;
- @RequestMapping(value = "/getMaxIdle", method = GET)
- @ResponseBody
- public String getMaxIdle() {
- return maxIdle;
- }
- }
使用下面url測試后輸入 10:
- http://localhost:8083/config/getMaxIdle
共享配置如果一個新的應(yīng)用,想要共享其他應(yīng)用的配置,比如上面serviceA可以共享serviceB的配置,是否可以呢?Nacos是支持配置共享的。
我們創(chuàng)建兩個共享配置 serviceA.properties 和 serviceB.properties,如下圖:
其中,serviceA.properties的配置內(nèi)容如下:
- spring.datasource.max-idle=10
serviceB.properties的配置內(nèi)容如下:
- spring.datasource.min-idle=5
我在當(dāng)前的應(yīng)用中共享這兩個配置,就需要在bootstrap.properties中增加下面的配置:
- spring.cloud.nacos.config.shared-configs[0].dataId=serviceA.properties
- spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
- spring.cloud.nacos.config.shared-configs[0].refresh=true
- spring.cloud.nacos.config.shared-configs[1].dataId=serviceB.properties
- spring.cloud.nacos.config.shared-configs[1].group=DEFAULT_GROUP
- spring.cloud.nacos.config.shared-configs[1].refresh=true
啟動應(yīng)用后,在瀏覽器輸入下面url,頁面響應(yīng) 10:
- http://localhost:8083/config/getMaxIdle
在瀏覽器輸入下面url,頁面響應(yīng) 5:
- http://localhost:8083/config/getMinIdle
注意:共享配置要加.properties或者.yaml的后綴,否則訪問不到。
總結(jié)
今天主要介紹了Nacos中配置中心的使用,包括基于namespace實現(xiàn)的多環(huán)境和多租戶的配置,基于group實現(xiàn)的業(yè)務(wù)隔離,以及共享配置。可以看到Nacos的配置中心功能還是比較完備的,可以很好地滿足業(yè)務(wù)系統(tǒng)使用。
分享名稱:手把手教你使用Nacos配置中心
網(wǎng)站路徑:http://m.5511xx.com/article/ccehdce.html


咨詢
建站咨詢
