最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nacos配置文件使用經(jīng)驗(yàn)及CAP原則詳解

 更新時間:2024年02月16日 10:30:27   作者:KerryWu  
這篇文章主要為大家介紹了Nacos配置文件使用經(jīng)驗(yàn)及CAP規(guī)則詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1、入門

發(fā)布配置

Data ID: nacos‐simple‐demo.yaml

Group : DEFAULT_GROUP

配置格式: YAML

配置內(nèi)容: common:

     ;                   config1: something

新建配置

在spring cloud生態(tài)下使用nacos config很容易,引入pom依賴:

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

創(chuàng)建bootstrap.properties文件,并添加nacos server的連接地址即可:

spring.application.name=demo-api
spring.cloud.nacos.config.server-addr=nacos服務(wù)器地址
spring.cloud.nacos.config.prefix=nacos匹配配置前綴,默認(rèn)為${spring.application.name}

2、配置文件

2.1. 規(guī)則配置

nacos上的dataId完整格式如下:

${prefix}-${spring.profile.active}.${file-extension}
  • prefix:取自bootstrap配置文件里面spring.cloud.nacos.config.prefix的值,而該配置的默認(rèn)值又為${spring.application.name}
  • spring.profile.active:取當(dāng)前環(huán)境的profile。如果項(xiàng)目spring.profile.active為空,dataId格式變成 ${prefix}.${file-extension}
  • file-exetension:為配置內(nèi)容的數(shù)據(jù)格式,可以通過配置項(xiàng) spring.cloud.nacos.config.file-extension來配置。目前只支持 properties和yaml類型,默認(rèn)properties。

實(shí)際測試,如果配置了spring.profile.active,項(xiàng)目會主動獲取nacos服務(wù)器上的配置文件包括:

${prefix}-${spring.profile.active}.${file-extension}

${prefix}.${file-extension}

2.2. 共享配置

大一點(diǎn)的項(xiàng)目,通常需要將配置信息拆分成多個配置文件,如:數(shù)據(jù)庫連接信息、多語言配置等。因此就存在了兩種情況:

  • 一個項(xiàng)目會加載多個配置文件。
  • 多個項(xiàng)目會共享同一個配置文件。

此時可以使用 shared-configs 或 extension-configs ,一直沒發(fā)現(xiàn)二者之間有啥區(qū)別,作用和用法基本一樣。例如:

spring.cloud.nacos.config.shared-configs[0].data-id=mysql.properties
spring.cloud.nacos.config.shared-configs[0].group=DATABASE_GROUP
spring.cloud.nacos.config.shared-configs[1].data-id=redis.properties
spring.cloud.nacos.config.shared-configs[1].group=DATABASE_GROUP
spring.cloud.nacos.config.shared-configs[2].data-id=common-i18n.properties
spring.cloud.nacos.config.shared-configs[2].group=I18N_GROUP
spring.cloud.nacos.config.shared-configs[2].refresh=true

上述配置中,將 shared-configs[n] 替換成 extension-configs[n],并沒有任何不同。

3. 優(yōu)先級

1.配置文件優(yōu)先級

按照前面介紹的,在使用nacos后,項(xiàng)目的配置文件來源多了起來,按照從高到低的優(yōu)先級順序分別為:

  • 通過內(nèi)部相關(guān)規(guī)則 ${prefix}-${spring.profile.active}.${file-extension} 自動生成相關(guān)的Data Id配置。
  • 通過 extension-configs 方式支持的Data Id配置。
  • 通過 shared-configs 方式支持的Data Id配置。

2. 共享配置內(nèi)部優(yōu)先級

共享配置 shared-configs[n]、extension-configs[n]內(nèi)部,n的值越大,優(yōu)先級越高。

前面的例子中優(yōu)先級順序:common-i18n.properties > redis.properties > mysql.properties

3. 本地優(yōu)先級

如果在配置文件中開啟了nacos config,在nacos服務(wù)器和項(xiàng)目本地,都創(chuàng)建了同樣的配置文件。nacos服務(wù)器上的配置項(xiàng),優(yōu)先級比本地高。

4. 通過日志查看優(yōu)先級

當(dāng)你實(shí)在搞不清naco配置文件加載的優(yōu)先級時,不要慌,直接看啟動項(xiàng)目日志即可。

在spring項(xiàng)目中開啟nacos config后,啟動項(xiàng)目會在控制臺打印出nacos加載的所有配置文件,而且按照優(yōu)先級順序從前往后排序。

如按照前面的配置,打印出來的日志為:

[PropertySourceBootstrapConfiguration.java:112] [] [ ] - Located property source: [BootstrapPropertySource {name='bootstrapProperties-demo-api-native.properties,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-demo-api.properties,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-demo-api,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-common-i18n.properties,I18N_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-redis.properties,DATABASE_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-mysql.properties,DATABASE_GROUP'}]

4. 項(xiàng)目規(guī)劃

這里談?wù)勔粋€項(xiàng)目創(chuàng)建時,有關(guān)nacos config相關(guān)配置規(guī)劃的想法。

1. 分配置文件

項(xiàng)目本地配置文件的功能分類:

  • bootstrap-{profile} :主要存放 nacos 的環(huán)境信息,不同環(huán)境下的nacos服務(wù)器地址可能不同。
  • bootstrap :存放 nacos 與環(huán)境無關(guān)的基礎(chǔ)信息,如 shared-configs[n]、extension-configs 等,以及服務(wù)名稱、端口號等。
  • application-{profile} :主要用于開發(fā)環(huán)境的配置,本地開發(fā)時有些參數(shù)不希望直接改公共的 nacos,可以在配置文件中修改。
  • application :本地開發(fā)時,存放與環(huán)境無關(guān)的基礎(chǔ)信息。

總體來說,在開啟nacos config服務(wù)后,都是以服務(wù)器上 ${prefix}-${spring.profile.active}.${file-extension}為準(zhǔn)。本地application的作用及其有限,除非滿足一些特殊的本地開發(fā)場景需求。

2. 分環(huán)境

雖然可以在一個nacos服務(wù)器上,通過${prefix}-${spring.profile.active}.${file-extension}來分環(huán)境,但不建議這么做。

不同環(huán)境nacos的服務(wù)器健壯程度、安全保密程度等,都是有不同要求的。一般建議在一個nacos服務(wù)器上,根據(jù)不同環(huán)境,連接不同的 namespace。甚至,根據(jù)不同環(huán)境,連接不同的nacos服務(wù)器。

我目前常用的做法,就是項(xiàng)目工程中不存放 application 相關(guān)的配置文件,只保留 bootstrap.properties 文件。不同環(huán)境下的配置文件是完全通過不同的nacos服務(wù)器或namespace來區(qū)分的,在本地運(yùn)行時或 DevOps 部署時,通過傳遞參數(shù)來運(yùn)行。例如本地運(yùn)行時 Program arguments 的配置:

--nacos.url=http://x.x.x.x:xxxx
--nacos.config.namespace=xxx
--spring.cloud.nacos.discovery.enabled=false
--rocketmq.consumer-enabled=false

3. 分項(xiàng)目

通過 GROUP 來區(qū)分項(xiàng)目。而多個項(xiàng)目公用的一些配置,可獨(dú)立出幾個 GROUP,如:數(shù)據(jù)庫連接配置、多語言配置等。

5. CAP

我們知道分布式 cap 理論中,只能滿足 cp 或 ap。就注冊中心而言分類如下:

  • eureka 實(shí)現(xiàn)的是ap;
  • zookeeper(基于 paxos算法)、consul(基于 raft算法) 實(shí)現(xiàn)的是 cp;
  • nacos 既能實(shí)現(xiàn) ap,也能實(shí)現(xiàn) cp(基于 raft算法)。

nacos 集群默認(rèn)支持的是 cap 原則中的 ap 原則。但是Nacos 集群可切換為CP原則,切換命令如下:

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

同時,微服務(wù)的 bootstrap.properties 還需配置如下選項(xiàng),指明注冊為臨時/永久實(shí)例。 AP模式不支持?jǐn)?shù)據(jù)一致性,所以只支持服務(wù)注冊的臨時實(shí)例,CP模式支持服務(wù)注冊的永久實(shí)例,滿足配置文件的一致性

#false為永久實(shí)例,true表示臨時實(shí)例開啟,注冊為臨時實(shí)例
spring.cloud.nacos.discovery.ephemeral=true

以上就是Nacos配置文件使用經(jīng)驗(yàn)及CAP規(guī)則詳解的詳細(xì)內(nèi)容,更多關(guān)于Nacos配置文件CAP的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

中西区| 景德镇市| 邵阳县| 永靖县| 汶川县| 福海县| 德令哈市| 台安县| 沈阳市| 南漳县| 宿松县| 中山市| 定远县| 无为县| 上栗县| 新余市| 丹阳市| 田林县| 东乌珠穆沁旗| 泗洪县| 西乌珠穆沁旗| 堆龙德庆县| 黔江区| 道孚县| 平安县| 拉萨市| 军事| 大理市| 嵩明县| 额济纳旗| 迭部县| 丁青县| 巴林左旗| 新建县| 志丹县| 定西市| 垫江县| 榆树市| 宁南县| 澄城县| 太康县|