久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    用了 3 年 Apollo,這次我選擇了 Nacos,原因不多說了

     壞尐孒95qanplv 2021-01-05

    來源:cnblogs.com/cjsblog/p/14007311.html

    • 1. 利用 Data ID 命名 來區分環境
    • 2. 利用 Group 來區分環境
    • 3. 利用 Namespace 區分環境
    • 4. 小結

    老板都開口了,我能說不么?

    友情提示:在實際項目中使用,更加推薦使用 Apollo 做配置中心。

    相比來說,Apollo 在企業級落地上,會比 Nacos 至少好一個 Level。例如說權限、灰度、發布審核等等。

    本文探討一下如何實現不同環境(開發、測試、灰度、正式)的配置管理問題。

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

    由此,實現多環境配置的方案也有三種:

    1、用命名空間(namespace)來區分不同的環境,一個命名空間對應一個環境;

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

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

    接下來,逐個來看

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

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

    默認用戶名密碼都是nacos

    圖片

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

    圖片

    pom.xml

    1 <?xml version='1.0' encoding='UTF-8'?>
     2 <project xmlns='http://maven./POM/4.0.0' xmlns:xsi='http://www./2001/XMLSchema-instance'
     3          xsi:schemaLocation='http://maven./POM/4.0.0 https://maven./xsd/maven-4.0.0.xsd'>
     4     <modelVersion>4.0.0</modelVersion>
     5     <parent>
     6         <groupId>org.springframework.boot</groupId>
     7         <artifactId>spring-boot-starter-parent</artifactId>
     8         <version>2.3.6.RELEASE</version>
     9         <relativePath/> <!-- lookup parent from repository -->
    10     </parent>
    11     <groupId>com.example</groupId>
    12     <artifactId>example</artifactId>
    13     <version>0.0.1-SNAPSHOT</version>
    14     <name>example</name>
    15
    16     <properties>
    17         <java.version>1.8</java.version>
    18         <spring-cloud-alibaba.version>2.2.3.RELEASE</spring-cloud-alibaba.version>
    19     </properties>
    20
    21     <dependencies>
    22         <dependency>
    23             <groupId>org.springframework.boot</groupId>
    24             <artifactId>spring-boot-starter-web</artifactId>
    25         </dependency>
    26         <dependency>
    27             <groupId>com.alibaba.cloud</groupId>
    28             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    29         </dependency>
    30     </dependencies>
    31
    32     <dependencyManagement>
    33         <dependencies>
    34             <dependency>
    35                 <groupId>com.alibaba.cloud</groupId>
    36                 <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    37                 <version>${spring-cloud-alibaba.version}</version>
    38                 <type>pom</type>
    39                 <scope>import</scope>
    40             </dependency>
    41         </dependencies>
    42     </dependencyManagement>
    43
    44     <build>
    45         <plugins>
    46             <plugin>
    47                 <groupId>org.springframework.boot</groupId>
    48                 <artifactId>spring-boot-maven-plugin</artifactId>
    49             </plugin>
    50         </plugins>
    51     </build>
    52
    53 </project>

    bootstrap.yml

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

    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 命名 來區分環境

    利用Data ID命名來區分環境,命名空間和組默認即可

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

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

    用命令行啟動也是一樣的

    圖片

    例如:

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

    2. 利用 Group 來區分環境

    項目不變,我們把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 命名就應該是 example2-test.yaml

    3. 利用 Namespace 區分環境

    圖片

    創建命名空間的時候,如果不指定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. 小結

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

    第二種,用Group區分,問題也是一樣的

    綜上,最好的是用Namespace區分環境,清晰明了,而且有利于做權限控制


      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 性做久久久久久久久| 久久综合97丁香色香蕉| 久久综合亚洲色HEZYO国产| 高潮潮喷奶水飞溅视频无码| 97欧美精品系列一区二区| 特级无码毛片免费视频尤物| 中文字幕国产精品av| 亚洲男女内射在线播放| 亚洲avav天堂av在线网爱情| 人妻综合专区第一页| 一本av高清一区二区三区| 亚洲最大成人网色| 成人国产精品一区二区网站公司| 一本精品中文字幕在线| 东京热一精品无码av| 亚洲午夜理论无码电影| 无码国内精品久久人妻蜜桃| 欧美亚洲日本国产综合在线美利坚| 久久97精品久久久久久久不卡| 国产福利姬喷水福利在线观看 | 国产性色的免费视频网站| 精品人无码一区二区三区| 东京热人妻丝袜无码AV一二三区观| 色综合久久久久综合体桃花网| 亚洲国产欧美一区二区好看电影| 无码精品人妻一区二区三区中| 人妻少妇偷人精品一区| 亚洲AV中文无码乱人伦| 男人狂桶女人高潮嗷嗷| 中文字幕日韩精品有码| 久久WWW免费人成一看片| 在线观看成人永久免费网站| 亚洲av男人电影天堂热app| 久久精品国产99精品国产2021| 久久天天躁狠狠躁夜夜婷| 亚洲国产精品综合久久2007| 国产欧美久久一区二区三区| 国产久9视频这里只有精品| 亚洲精品综合网二三区| 国产一区二区三区不卡在线看 | 欧美乱妇高清无乱码免费|