SpringCloud(Alibaba版)Nacos配置中心


一、Nacos Config簡介

是什么?

  Nacos 是一個易於構建雲原生應用的動態服務發現,配置管理和服務管理平台。使用 Spring Cloud Alibaba Nacos Config 可基於 Spring Cloud 的編程模型快速訪問 Nacos 配置管理功能。

  • Nacos:Dynamic Naming and Configuration Service。

  • Nacos:其實就是 Eureka 服務注冊中心 + Config 服務配置中心 + Bus消息總線的組合。

 

二、基礎配置

1)build.gradle項目依賴

創建gradle模塊config-client-nacos並添加web、actuator監控、alibaba-nacos-discovery與alibaba-nacos-config依賴

dependencies {
   compile group: 'org.springframework.boot', name: 'spring-boot-starter-web'

   compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'

   compile group: 'com.alibaba.cloud', name: 'spring-cloud-starter-alibaba-nacos-config', version: '2.1.0.RELEASE'

   compile group: 'com.alibaba.cloud', name: 'spring-cloud-starter-alibaba-nacos-discovery', version: '2.1.0.RELEASE'
}

2)為什么要配置兩個配置文件?

  Nacos 同 Spring Cloud Config 在項目初始化時,要保證先從配置中心進行配置拉取,拉取配置后,才能保證項目的正常啟動。Spring Boot 中配置文件的加載是存在優先級順序的,bootstrap 優先級高於 application。

bootstrap.yaml:

server:
  port: 7071
spring:
  application:
    name: config-client-nacos
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #指定Nacos服務注冊中心地址
      config:
        server-addr: 127.0.0.1:8848 #指定Nacos服務配置中心地址
        file-extension: yaml #指定yaml格式的配置(原先GitHub上的配置文件)
View Code

application.yaml:

spring:
  profiles:
    active: dev #表示激活開發環境
View Code

3)啟動類ConfigClientNacosApplication.java

package org.wesson.cloudalibaba.nacos;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class ConfigClientNacosApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigClientNacosApplication.class, args);
    }

}
View Code

4)Controller

通過 Spring Cloud 原生注解 @RefreshScope 實現配置自動刷新功能:

package org.wesson.cloudalibaba.nacos.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.RestController;

@RestController
@RefreshScope // 支持Nacos的動態刷新功能
public class ConfigNacosController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/getInfo")
    public String getConfigInfo() {
        return configInfo;
    }

}
View Code

5)在Nacos中添加配置信息

理論,Nacos 中的匹配規則

Nacos 中的 dataid 的組成格式及與 Spring Boot 配置文件中的匹配規則。官方文檔鏈接:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

公式:

${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

用例:

config-client-nacos-dev.yaml

注意:嚴格按照官網公式,不要讓 spring.profile.active 為空,不然會出現莫名其妙的問題。

實操,新建配置

啟動 Nacos 服務后,找到配置管理下的配置列表,點擊右側加號:

對應上面公式,設置Data ID,添加如下配置內容信息,之后點擊發布:

小總結

更直觀的看法如下,這樣一來,官網的 dataid 格式就看明確了吧!!!

6)測試

啟動前需要在 Nacos 客戶端配置列表菜單下有對應的yaml配置文件

Step1:啟動 Nacos 服務器

Step2:運行 config-client-nacos 啟動類,端口為7071

Step3:調用接口查看配置信息,訪問http://localhost:7071/getInfo,結果如下:

成功獲取 Nacos 客戶端配置列表 config-client-nacos-dev.yaml 配置文件中的內容。

 

三、自帶動態刷新配置

  不需要添加任何相關的 Bus 消息總線依賴,直接編輯修改 Nacos 客戶端配置列表中的 yaml 配置文件版本發布即可:

點擊發布后,會有一個當前值與原始值的對比效果,然后確認發布:

根本不需要重啟任何服務以及原先發送的 POST 請求。再次調用查看配置的接口,就會發現配置成功實現動態刷新功能了:

不得不說,阿里巴巴的 Nacos 技術還是還是非常成熟的,相當於完全代替了 Eureka、Config 與 Bus 三個組件。

注意:可以在 properties 配置文件使用 spring.cloud.nacos.config.refresh.enabled=false 設置禁用自動刷新配置功能。或者使用 yaml 格式:

spring:
  cloud:
    nacos:
      config:
        refresh:
          enabled: false
View Code
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM