91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nacos配置中心實際操作

發布時間:2021-06-26 14:35:06 來源:億速云 閱讀:316 作者:chen 欄目:編程語言

本篇內容主要講解“Nacos配置中心實際操作”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Nacos配置中心實際操作”吧!

什么是Nacos

一個更易于構建云原生應用的動態服務發現、配置管理和服務管理平臺。

通俗解釋就是:Nacos是一個注冊中心&配置中心

關于Nacos注冊中心的功能,在Nacos注冊中心實戰篇中,阿鑒已經給大家詳細介紹了,今天我們就來看看配置中心如何使用吧~

基本使用

在介紹Nacos注冊中心實戰時,阿鑒已經介紹并搭建好了Nacos集群,這里就直接使用當時的Nacos集群了。

  1. 引入依賴

    my-goods項目引入config依賴

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


  2. 編輯配置

    spring:
    	application:
        name: my-goods
      cloud:
        nacos:
          config:
            server-addr: 192.168.2.11:8850
            username: nacos
            password: nacos


  3. 在nacos新建配置文件并編寫配置

    Nacos配置中心實際操作

    由于我們的配置中并未指定命名空間,所以默認使用public命名空間

    Nacos配置中心實際操作

    Data ID: 在什么都沒有配置的情況下,Data ID為「服務名」或者「服務名.文件擴展名」,也就是my-goods或者my-goods.properties(我們也沒有配置文件擴展名,默認為properties)

    Group: 默認為DEFAULT_GROUP

    配置格式:即為文件格式,默認為properties

    配置內容:文件格式是properties, 配置內容即為properties格式寫法

  4. 編寫代碼

    @RestController
    @RequestMapping("/goods")
    public class GoodsController {
    
        @Value("${goods}")
        public String goods;
    
        @GetMapping("/config")
        public String config(){
            return "this goods is " + goods;
        }
    }


  5. 啟動服務測試

    Nacos配置中心實際操作

    此時已經讀取到遠程的配置

動態配置

Nacos作為配置中心,將配置放在遠端管理只是基礎能力,更重要的是還提供了方便快捷的動態刷新配置功能。

  1. 修改代碼

    要想使得配置具有自動刷新的能力,只需要在對應的類加上@RefreshScope注解即可

    @RefreshScope
    @RestController
    @RequestMapping("/goods")
    public class GoodsController {
    
        @Value("${goods}")
        public String goods;
    
        @GetMapping("/config")
        public String config(){
            return "this goods is " + goods;
        }
    }


  2. 修改Nacos上的配置

    Nacos配置中心實際操作

    修改配置:apple -> banana

    Nacos配置中心實際操作

    發布完之后可以看到控制臺中出現監聽到配置變更的輸出

    2021-05-09 22:45:13.103  INFO 5930 --- [168.1.11_8850] c.a.n.client.config.impl.ClientWorker    : [fixed-114.116.212.76_8850] [polling-resp] config changed. dataId=my-goods, group=DEFAULT_GROUP
    2021-05-09 22:45:13.104  INFO 5930 --- [168.1.11_8850] c.a.n.client.config.impl.ClientWorker    : get changedGroupKeys:[my-goods+DEFAULT_GROUP]


  3. 再次調用接口

    Nacos配置中心實際操作

    可以看到配置已經發生了變更

進階使用

增加服務環境

一般來說,在我們開發項目時,都會區分環境,比如開發環境、測試環境、生產環境,每個環境配置都會有些許不同,比如mysql配置。那我們就會在配置文件中增加以下配置:

spring:
  profiles:
    active: dev

此時Nacos將增加新的Data ID: 服務名-環境名.文件擴展名

即為 my-goods-dev.properties

  1. 修改代碼

    @RefreshScope
    @RestController
    @RequestMapping("/goods")
    public class GoodsController {
    
        @Value("${goods}")
        public String goods;
    
        @Value("${price}")
        public String price;
    
        @GetMapping("/config")
        public String config(){
            return "this goods is " + goods + ", and price is " + price;
        }
    }


  2. 新增配置

    Nacos配置中心實際操作

    增加一個新的data id 為my-goods-dev.properties配置

    Nacos配置中心實際操作

  3. 重啟項目測試

    Nacos配置中心實際操作

優先級問題

如果在my-goods-dev.properties配置中增加goods=lemon的配置,那么此時my-goods的和my-goods-dev.propertiesgoods配置哪個會生效呢?

  1. my-goods-dev.properties中增加goods=lemon的配置

    Nacos配置中心實際操作

  2. 直接測試,此時無須重啟項目

    Nacos配置中心實際操作

    從測試結果看出,Nacos的優先級和Spring的優先級相同,帶環境名的配置優先

共享配置

雖然本篇一直只用my-goods這一個服務做案例,但是大家不要忘了,我們這其實是一個微服務系統,在一個微服務系統里,總有些配置是會被許多服務共同使用的,比如Redis的配置。

如果每個服務都在自己的配置里單獨維護同樣的Redis配置,當Redis配置發生變更時,那么每個服務都要改一次,想想其實也是挺惡心的。

為了解決這個問題,Nacos同樣貼心的給我們提供了另一種配置方式:共享配置

  1. 編輯配置文件

    增加shared-configs,并將data-id設置為redis.yaml(可定義, 但必須要有文件擴展名)

    spring:
      application:
        name: my-goods
      profiles:
        active: dev
      cloud:
        nacos:
          config:
            server-addr: 114.116.212.76:8850
            username: nacos
            password: nacos
            shared-configs:
              - data-id: redis.yaml
                refresh: true

     

    refresh: true表示動態刷新配置

    此時文件擴展名即為data-id的后綴名

  2. 在nacos中增加配置

    Nacos配置中心實際操作

    調皮的小伙伴可以試試這里「配置格式」配成Properties會發生什么

  3. 編寫代碼

    @RefreshScope
    @RestController
    @RequestMapping("/goods")
    @RequiredArgsConstructor
    public class GoodsController {
    
        @Value("${redis}")
        public String redis;
    
        @GetMapping("/redis")
        public String redis(){
            return "redis url is " + redis;
        }
    }

     

    細心的小伙伴可能會說:哎呀呀,你這啥redis配置呀,假的吧!對,大家就假裝認為我寫了個redis配置就好啦~

  4. 重啟項目測試

    Nacos配置中心實際操作

擴展配置

擴展配置和共享配置的使用方式相同,增加extension-configs即可

spring:
	cloud:
    nacos:
      config:
        server-addr: 114.116.212.76:8850
        username: nacos
        password: nacos
        shared-configs:
          - data-id: redis.yaml
            refresh: true    
        extension-configs:
          - data-id: extension.yaml
            refresh: true

擴展配置的優先級比共享配置優先級高一些

命名空間

Nacos中還有一個命名空間的概念,不同命名空間的配置相互隔離,相信大家也發現了,在測試案例中,我們一直使用的是一個public的命名空間,這是Nacos的默認命名空間。

通常我們會以項目名做命名空間進行區分,來試試吧~

  1. 假設我們現在做一個商城項目,新建命名空間mall

    Nacos配置中心實際操作

  2. public命名空間的配置克隆到mall

    Nacos配置中心實際操作

    Nacos配置中心實際操作

  3. 修改配置

    spring:
      application:
        name: my-goods
      profiles:
        active: dev
      cloud:
        nacos:
          config:
            server-addr: 114.116.212.76:8850
            username: nacos
            password: nacos
            namespace: mall
            shared-configs:
              - data-id: redis.yaml
                refresh: true
            extension-configs:
              - data-id: extension.yaml
                refresh: true

     

    此時就只會讀取mall命名空間下的配置啦

文件擴展名與配置文件名

講到現在,我們用的文件擴展名和配置文件名(data id)依舊是默認的properties服務名,如果小伙伴想要修改的話可以修改file-extensionprefix

file-extension: 文件擴展名

prefix: data-id的前綴,默認為服務名

優雅使用

我們現在已經學會了如何使用@Value加@RefreshScope實現動態刷新配置,但是不得不說這種方式并不優雅。

可以設想一下,凡是在@Value的地方都要加一個@RefreshScope注解,而且平常一個配置可能在多個地方使用,最后就會變成到處都是@RefreshScope, 要多難看就難看。

當然,Nacos也提供了一個@NacosValue加@NacosConfigurationProperties方式讓我們可以不需要再使用@RefreshScope注解,但阿鑒覺得這種方式對系統侵入性太強了。

所以,阿鑒推薦使用@ConfigurationProperties方式管理配置進行使用。

  1. 新建配置類, 在配置類上加上@RefreshScope注解

    @Data
    @RefreshScope
    @ConfigurationProperties(prefix = "fruit")
    public class GoodsProperties {
    
        private String name;
        private double price;
        private int number;
    
    }


  2. 使用

    @RestController
    @RequestMapping("/goods")
    public class GoodsController {
    
        @Autowired
        private GoodsProperties goodsProperties;
    
        @GetMapping("/all")
        public String all(){
            String result = "name: %s, price: %s, number: %s";
            return String.format(result, goodsProperties.getName(),
                    goodsProperties.getPrice(), goodsProperties.getNumber());
        }
    }

     

    此時GoodsController可以不再加@RefreshScope注解了

優先級全測試

到現在,我們已經認識了許多的配置格式了,先來總結一下有哪些吧

  • 服務名

  • 服務名.文件擴展名

  • 服務名-環境.文件擴展名

  • 擴展配置

  • 共享配置

那么,它們的優先級是如何的呢?

這里,為了方便展示效果,阿鑒先告訴大家優先級是怎樣的:

共享配置 < 擴展配置 < 服務名 < 服務名.文件擴展名 < 服務名-環境.文件擴展名

  1. 修改配置

    spring:
      application:
        name: my-goods
      profiles:
        active: dev
      cloud:
          config:
            server-addr: 114.116.212.76:8850
            username: nacos
            password: nacos
            namespace: mall
            shared-configs:
              - data-id: redis.yaml
                refresh: true
              - data-id: share.properties
                refresh: true
            extension-configs:
              - data-id: extension.properties
                refresh: true


  2. 編寫代碼

    @RefreshScope
    @RestController
    @RequestMapping("/goods")
    @RequiredArgsConstructor
    public class GoodsController {
        /**
         * 測試配置優先級
         */
        @Value("${filename}")
        public String filename;
    
        @GetMapping("/filename")
        public String filename(){
            return "now filename is " + filename;
        }
    }


  3. 在Nacos中建出以下配置文件

    Nacos配置中心實際操作

    nacos中不允許文件為空,所以隨便在里面寫點什么就行

  4. 先在共享配置share.properties文件中增加配置filename=share.properties

  5. 開始測試

    Nacos配置中心實際操作

    緊接在,分別依次在

    extension.properties文件中增加filename=extension.properties配置,

    my-goods文件中增加filename=my-goods配置,

    my-goods.properties文件中增加filename=my-goods.properties配置,

    my-goods-dev.properties文件中增加filename=my-goods-dev配置

    效果圖如下:

    Nacos配置中心實際操作

    Nacos配置中心實際操作

    Nacos配置中心實際操作

    Nacos配置中心實際操作

小結

今天阿鑒給大家介紹了Nacos配置中心的功能,關于Nacos的動態配置刷新,多種配置方式,以及如何優雅的使用它,最后還給大家測試了所有配置的優先級:共享配置 < 擴展配置 < 服務名 < 服務名.文件擴展名 < 服務名-環境.文件擴展名。希望小伙伴們有所收獲。

到此,相信大家對“Nacos配置中心實際操作”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥芬河市| 临泽县| 新巴尔虎左旗| 弥勒县| 桃园市| 江孜县| 柳州市| 郴州市| 新沂市| 尚义县| 祁阳县| 浦东新区| 板桥市| 嘉定区| 麻城市| 太原市| 修武县| 博客| 包头市| 白城市| 陇西县| 太和县| 浮梁县| 洪雅县| 梁平县| 福贡县| 上思县| 平邑县| 莱阳市| 邢台市| 曲麻莱县| 左贡县| 鄄城县| 天镇县| 平凉市| 南城县| 怀柔区| 沙洋县| 资讯| 蒲城县| 朝阳县|