<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          配置中心 Nacos 不同環(huán)境的配置管理方案

          共 4247字,需瀏覽 9分鐘

           ·

          2020-12-27 22:28


          點擊上方?泥瓦匠?關(guān)注我!

          老家浙江東海邊,靠海吃海,目前經(jīng)營一個小品牌,讓普通人吃到最新鮮的海鮮。有興趣可以點擊了解:《浙里有漁,鮮人一步!》???


          本文探討?Nacos?作為配置中心,如何實現(xiàn)不同環(huán)境(開發(fā)、測試、灰度、正式)的配置管理問題。

          就像Maven用groupId、artifactId、version三者來定位jar包在倉庫中的位置一樣,Nacos也提供了 Namespace (命名空間) 、Data ID (配置集ID)、 Group (組) 來確定一個配置文件(或者叫配置集)。

          由此,實現(xiàn)多環(huán)境配置的方案也有三種:

          1、用命名空間(namespace)來區(qū)分不同的環(huán)境,一個命名空間對應(yīng)一個環(huán)境;

          2、用配置組(group)來區(qū)分不同的環(huán)境,命名空間用默認的public即可,一個組對應(yīng)一種環(huán)境;

          3、用配置集ID(Data ID)名稱來區(qū)分不同的環(huán)境,命名空間和組用默認的即可,通過文件命名來區(qū)分;

          接下來,逐個來看

          http://{host}:{port}/nacos

          http://{host}:{port}/nacos/index.html

          默認用戶名密碼都是nacos

          為了方便演示,這里建了一個名為example的Spring Boot項目:

          pom.xml

          ?1?"1.0"?encoding="UTF-8"?>
          ?2?"http://maven.apache.org/POM/4.0.0"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          ?3??????????xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?https://maven.apache.org/xsd/maven-4.0.0.xsd">
          ?4?????4.0.0
          ?5?????
          ?6?????????org.springframework.boot
          ?7?????????spring-boot-starter-parent
          ?8?????????2.3.6.RELEASE
          ?9??????????
          10?????

          11?????com.example
          12?????example
          13?????0.0.1-SNAPSHOT
          14?????example
          15?
          16?????
          17?????????1.8
          18?????????2.2.3.RELEASE
          19?????

          20?
          21?????
          22?????????
          23?????????????org.springframework.boot
          24?????????????spring-boot-starter-web
          25?????????

          26?????????
          27?????????????com.alibaba.cloud
          28?????????????spring-cloud-starter-alibaba-nacos-config
          29?????????

          30?????

          31?
          32?????
          33?????????
          34?????????????
          35?????????????????com.alibaba.cloud
          36?????????????????spring-cloud-alibaba-dependencies
          37?????????????????${spring-cloud-alibaba.version}
          38?????????????????<type>pomtype>
          39?????????????????import
          40?????????????

          41?????????

          42?????

          43?
          44?????
          45?????????
          46?????????????
          47?????????????????org.springframework.boot
          48?????????????????spring-boot-maven-plugin
          49?????????????

          50?????????

          51?????

          52?
          53?

          bootstrap.yml

          spring:
          ??application:
          ????name:?example
          ??cloud:
          ????nacos:
          ??????config:
          ????????server-addr:?192.168.100.10:8848
          ????????file-extension:?yaml

          Spring Boot 基礎(chǔ)不介紹了,不會的推薦看下這個教程:

          https://github.com/javastacks/spring-boot-best-practice

          HelloController.java

          package?com.example.controller;

          import?org.springframework.beans.factory.annotation.Value;
          import?org.springframework.cloud.context.config.annotation.RefreshScope;
          import?org.springframework.web.bind.annotation.GetMapping;
          import?org.springframework.web.bind.annotation.RequestMapping;
          import?org.springframework.web.bind.annotation.RestController;

          /**
          ?*?@author?ChengJianSheng
          ?*?@data?2020/11/19
          ?*/
          @RestController
          @RequestMapping("/hello")
          @RefreshScope
          public?class?HelloController?{

          ????@Value("${greet.hello}")
          ????private?String?greet;

          ????@GetMapping("/sayHi")
          ????public?String?sayHi()?{
          ????????return?greet;
          ????}
          }

          1、利用 Data ID 命名 來區(qū)分環(huán)境

          利用Data ID命名來區(qū)分環(huán)境,命名空間和組默認即可。

          在 Nacos Spring Cloud 中,dataId 的完整格式如下:

          ?${prefix}-${spring.profiles.active}.${file-extension}
          • prefix 默認為 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix來配置
          • spring.profiles.active 即為當前環(huán)境對應(yīng)的 profile,詳情可以參考 Spring Boot文檔。注意:當 spring.profiles.active 為空時,對應(yīng)的連接符 - 也將不存在,dataId 的拼接格式變成?{file-extension}
          • file-exetension 為配置內(nèi)容的數(shù)據(jù)格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持 properties 和 yaml 類型。

          用命令行啟動也是一樣的:

          例如:

          java?-Dspring.profiles.active=test?-jar?example-0.0.1-SNAPSHOT.jar

          2、利用 Group 來區(qū)分環(huán)境

          項目不變,我們把spring.application.name改成example2

          命名空間用默認的public

          java?-Dspring.cloud.nacos.config.group=DEV_GROUP?-jar?example-0.0.1-SNAPSHOT.jar
          java?-Dspring.cloud.nacos.config.group=TEST_GROUP?-jar?example-0.0.1-SNAPSHOT.jar
          java?-Dspring.profiles.active=test?-Dspring.cloud.nacos.config.group=TEST_GROUP?-jar?example-0.0.1-SNAPSHOT.jar

          如果是這樣的話,這個時候,Data ID 命名就應(yīng)該是 example2-test.yaml

          3、利用 Namespace 區(qū)分環(huán)境

          創(chuàng)建命名空間的時候,如果不指定ID,則自動生成的id就是這樣的uuid字符串,我們還是自己指定一個有意義的ID吧

          java?-Dspring.cloud.nacos.config.namespace=ns_dev?-jar?example-0.0.1-SNAPSHOT.jar
          java?-Dspring.profiles.active=dev?-Dspring.cloud.nacos.config.namespace=ns_dev?-jar?example-0.0.1-SNAPSHOT.jar
          java?-Dspring.cloud.nacos.config.namespace=ns_test?-jar?example-0.0.1-SNAPSHOT.jar
          java?-Dspring.profiles.active=test?\
          ?????-Dspring.cloud.nacos.config.namespace=ns_test?\
          ?????-Dspring.cloud.nacos.config.group=TEST_GROUP?\
          ?????-jar?example-0.0.1-SNAPSHOT.jar

          4、小結(jié)

          第一種,用 Data ID 區(qū)分環(huán)境,雖然簡單,但是每個項目要創(chuàng)建4個配置文件,隨著項目的增多,都在一個命名空間下回顯得很混亂,查找起來也不是很方便,而且不利于做權(quán)限控制

          第二種,用Group區(qū)分,問題也是一樣的

          綜上,最好的是用Namespace區(qū)分環(huán)境,清晰明了,而且有利于做權(quán)限控制

          https://nacos.io/zh-cn/docs/concepts.html

          老家浙江東海邊,靠海吃海,目前經(jīng)營一個小品牌,讓普通人吃到最新鮮的海鮮。有興趣可以點擊了解:《浙里有漁,鮮人一步!》???

          往期推薦

          如何學(xué)會自媒體掙錢?

          實現(xiàn)用戶一鍵登錄的方案有哪些?

          如何實現(xiàn)刪除重復(fù)記錄并且只保留一條?

          浙里有漁,鮮人一步!

          點擊領(lǐng)取:程序員最新學(xué)習(xí)資料!

          下方二維碼關(guān)注我

          技術(shù)草根堅持分享?編程,算法,架構(gòu)

          朋友助力下!點個在看
          瀏覽 35
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产伦久久久精品A88 | 免费亚洲黄色 | 大荫蒂hd大荫蒂视频 | 免费欧美性爱 | 欧美女人操逼视频 |