Spring Cloud Alibaba 初體驗(一) Nacos 配置中心


一、Nacos 下載與初始化配置

本文使用1.2.0,下載地址:https://github.com/alibaba/nacos/releases

Nacos 單機模式支持持久化配置到 MySQL 數據庫,修改 conf/application.properties 配置:

spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://數據庫地址:端口/數據庫名?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=用戶名
db.password=密碼

然后在數據庫執行 conf/nacos-mysql.sql 初始化數據庫

Windows 環境下雙擊 bin/startup.cmd 啟動 Nacos

二、Nacos 配置及在 Spring Cloud 中的使用

Nacos 可以根據三種模式區分不同環境下的配置:

  1. 根據 Data Id 和 profiles (spring.profiles.active)
  2. 根據 Group
  3. 根據 Namespace (命名空間)

本人認為根據 Namespace 區分不同環境下的配置應該更適用於實際項目,故本文以 Namespace 模式為例

2.1 新建命名空間

新增名字為 dev 的命名空間

2.2 新增配置

在 dev 命名空間新增配置,Data Id 為 service1.yml,Group 為 service1,配置格式為 YAML,內容為:

server:
  port: 8070

2.3 在 Spring Cloud 中使用

添加依賴:

    <dependencies>
        ...

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

        ...
    </dependencies>

    <dependencyManagement>
        <dependencies>
            ...

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            ...
        </dependencies>
    </dependencyManagement>

spring-cloud-alibaba-dependencies 是 Spring Cloud Alibaba BOM,包含了 Spring Cloud Alibaba 的所有依賴的版本,使用 Nacos, Sentinel 等時不用再指定版本

新建 Spring Cloud 項目,在 bootstrap.yml 新增配置:

spring:
  application:
    name: service1

  cloud:
    nacos:
      config:
        server-addr: 192.168.92.1:8848 # Nacos 地址與端口
        namespace: e5fc372c-ad66-4e0e-a353-a217d0a315ba # 命名空間ID
        group: service1
        file-extension: yml

啟動項目,可以看到項目使用的端口為在 Nacos 中配置的 8070 說明配置生效

2.4 擴展配置

有時我們想要將配置放置在不同的文件或者多個項目共用部分配置,則可以添加擴展配置

2.4.1 在 Nacos 添加配置

在 dev 命名空間新增配置,Data Id 為 greeting.yml,Group 為 common,配置格式為 YAML,內容為:

greeting: Hello, world!

在 dev 命名空間新增配置,Data Id 為 author.yml,Group 為 common,配置格式為 YAML,內容為:

author: karonda

2.4.2 Spring Cloud 配置

方法一:

spring:
  application:
    name: service1

  cloud:
    nacos:
      config:
        server-addr: 192.168.92.1:8848
        namespace: e5fc372c-ad66-4e0e-a353-a217d0a315ba
        group: service1
        file-extension: yml
        extension-configs[0]:
          data-id: greeting.yml
          group: common
          refresh: true # 配置修改后是否自動更新
        extension-configs[1]:
          data-id: author.yml
          group: common
          refresh: true

方法二:

spring:
  application:
    name: service1

  cloud:
    nacos:
      config:
        server-addr: 192.168.92.1:8848
        namespace: e5fc372c-ad66-4e0e-a353-a217d0a315ba
        group: service1
        file-extension: yml
        extension-configs:
          - data-id: greeting.yml
            group: common
            refresh: true
          - data-id: author.yml
            group: common
            refresh: true

2.4.3 測試

@RefreshScope # 配置自動更新
@RestController
public class GreetingController {

    @Value("${greeting:}")
    private String greetingStr;
    @Value("${author:}")
    private String authorStr;

    @RequestMapping("/greeting")
    public String greeting() {
        return greetingStr + " from " + authorStr;
    }
}

訪問 http://localhost:8070/greeting

參考:

  1. Nacos支持三種部署模式
  2. Nacos學習筆記(五)—— NacosConfig配置


免責聲明!

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



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