最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Nacos打造微服務(wù)配置中心詳解

 更新時間:2025年10月16日 14:45:50   作者:jakeswang  
本文介紹了Nacos作為服務(wù)注冊和配置中心的使用方法,包括配置創(chuàng)建、客戶端集成、動態(tài)刷新、多環(huán)境和多文件管理等實踐,說明了其在微服務(wù)配置統(tǒng)一維護和動態(tài)更新中的優(yōu)勢,并給出了具體操作步驟和配置規(guī)則

一、背景介紹

Nacos 作為服務(wù)注冊中心的使用方式,同時 Nacos 還可以作為服務(wù)配置中心,用于集中式維護各個業(yè)務(wù)微服務(wù)的配置資源。

作為服務(wù)配置中心的交互流程圖如下。

這樣設(shè)計的目的,有一個明顯的好處就是:有利于對各個微服務(wù)的配置資源進行統(tǒng)一維護和管理,尤其是要更新某個配置參數(shù)時,能避免大量人肉運維工作。

今天通過一些案例我們一起來了解一下,如何使用 Nacos 來實現(xiàn)服務(wù)配置中心的管理。

二、方案實踐

2.1、創(chuàng)建配置

Nacos 安裝過程與之前介紹的一樣,Nacos 服務(wù)端啟動后,進入到服務(wù)端管理頁面,在“配置列表”功能頁面中,點擊右上角的“+”按鈕,進入“新建配置”頁面,創(chuàng)建配置內(nèi)容,示例如下:

為了便于演示,在上文中我們創(chuàng)建了一個 dataId 為nacos-config-client.properties,Group 為DEFAULT_GROUP,內(nèi)容為blog.name=張三的配置信息。

在下文中,我們將會用到它。

2.2、創(chuàng)建客戶端應(yīng)用

首先,創(chuàng)建一個 Maven 工程,命名為nacos-config-client,并在pom.xml中引入相關(guān)的依賴內(nèi)容,示例如下:

<properties>
    <spring-boot.version>2.2.5.RELEASE</spring-boot.version>
    <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
    <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
</properties>

<dependencies>
    <!-- SpringBoot web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Nacos 配置中心 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <!-- 引入 springBoot 版本號 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- 引入 spring cloud 版本號 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- 引入 spring cloud alibaba 適配的版本號 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-cloud-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

接著,創(chuàng)建一個服務(wù)啟動類。

@SpringBootApplication
public class Application {

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

然后,創(chuàng)建一個 web 接口,以便測試上文創(chuàng)建的配置變量是否能生效。

@RestController
@RefreshScope
public class HelloController {

    @Value("${blog.name}")
    private String name;

    @RequestMapping("/hello")
    public String hello() {
        return name;
    }
}

最后,在application.properties配置文件中,添加 Nacos 服務(wù)配置中心地址,示例如下:

spring.application.name=nacos-config-client
server.port=9012

# 設(shè)置Nacos配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

2.3、服務(wù)測試

nacos-config-client客戶端服務(wù)啟動起來,在瀏覽器中訪問http://127.0.0.1:9012/hello,如果不出意外的話,會返回如下結(jié)果。

此時說明 SpringBoot 已成功從 Nacos 服務(wù)端獲取到相關(guān)的配置變量。

下面我們在 Nacos 中將blog.name配置內(nèi)容稍微修改一下,驗證一下客戶端的配置變量是否能動態(tài)刷新。

再次訪問http://127.0.0.1:9012/hello,返回結(jié)果如下圖。

說明在 Nacos 中修改配置變量后,SpringBoot 也會自動刷新這個配置信息。

之所以能實現(xiàn)這種效果,主要得益于@RefreshScope注解,它可以動態(tài)的從 Nacos 服務(wù)端獲取最新的配置信息,并將其注入到 SpringBoot 中。

三、配置規(guī)則介紹

在上文中,我們簡單的介紹了 Nacos 作為配置中心的使用方式。

例子中我們只配置了 Nacos 的配置中心地址信息,并沒有配置任何其他規(guī)則就能成功的使用 Nacos 配置中心,它是如何做到的呢?

在 Nacos Spring Cloud 中有 5 個核心配置項,下面我們一起來看看它的作用。

  • spring.cloud.nacos.config.server-addr:對應(yīng) Nacos 服務(wù)端地址
  • spring.cloud.nacos.config.prefix:對應(yīng) DataId 的前綴,默認值為應(yīng)用名稱,即spring.application.name變量值
  • spring.cloud.nacos.config.file-extension:對應(yīng) DataId 的后綴,同時也是配置內(nèi)容的文件格式,默認值為properties
  • spring.cloud.nacos.config.group:對應(yīng) Group 參數(shù),默認值為DEFAULT_GROUP
  • spring.cloud.nacos.config.namespace:對應(yīng)配置的命名空間,默認為空;常用于不同環(huán)境的配置隔離,如開發(fā)測試環(huán)境和生產(chǎn)環(huán)境的資源隔離等

默認情況下,Nacos Spring Cloud 加載出來的 dataId 完整格式如下:

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

因此,在不做任何配置項目的情況下,當(dāng) DataId 的前綴和 Spring Boot 應(yīng)用名稱一致,就可以成功加載對應(yīng)的配置項。

如果我們不想通過應(yīng)用服務(wù)名稱來加載 DataId,可以借助spring.cloud.nacos.config.prefix相關(guān)規(guī)則來實現(xiàn)指定配置項的加載。

需要特別注意的是:由于 Spring Boot 加載順序的緣故,自定義的配置項參數(shù)必須放在bootstrap.properties文件或者bootstrap.yaml文件中才能生效。

下面我們還是通過一個例子,來快速了解 Nacos Spring Cloud 相關(guān)配置規(guī)則的應(yīng)用。

3.1、應(yīng)用實踐

下面我們以加載myConfig-dev.yaml配置項為例,具體實現(xiàn)如下。

首先,創(chuàng)建一個myConfig-dev配置項。

接著,創(chuàng)建一個bootstrap.properties文件,并指定相關(guān)配置項,內(nèi)容如下:

spring.application.name=nacos-config-client
server.port=9012

# 指定運行環(huán)境
spring.profiles.active=dev

# 設(shè)置Nacos配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 對應(yīng) DataId 的前綴,如果不設(shè)置默認取【spring.application.name】
spring.cloud.nacos.config.prefix=myConfig
# 對應(yīng) DataId 的后綴,同時也是配置內(nèi)容的文件格式,默認值為properties
spring.cloud.nacos.config.file-extension=yaml
# 對應(yīng) Group 參數(shù),默認值為DEFAULT_GROUP
spring.cloud.nacos.config.group=DEFAULT_GROUP
# 對應(yīng)配置的命名空間,默認為空
spring.cloud.nacos.config.namespace=

然后,創(chuàng)建一個 web 接口,以便驗證配置變量是否能生效。

@RestController
@RefreshScope
public class HelloController {

    @Value("${user.id}")
    private String id;

    @Value("${user.name}")
    private String name;


    @RequestMapping("/test")
    public String test() {
        return "id" + id + ",name:" + name;
    }
}

最后,再次啟動服務(wù),在瀏覽器中訪問http://127.0.0.1:9012/hello,如果不出意外的話,會返回如下內(nèi)容。

說明,Spring Boot 已成功加載了指定配置項。

四、高級特性介紹

4.1、多環(huán)境配置介紹

在 Nacos 服務(wù)端,其實還隱含有三個核心的參數(shù),分別是:Data ID、Group、Namespace,我們可以利用它來實現(xiàn)更高級的功能。

這三個參數(shù)的層級關(guān)系,可以用如下圖來概括。

每個參數(shù)的作用如下:

  • Namespace:表示命名空間,通常用于不同環(huán)境的配置隔離,如開發(fā)測試環(huán)境和生產(chǎn)環(huán)境的資源隔離等
  • Group:表示分組管理
  • Data ID:也就是我們常說的配置項,也可以簡單理解為我們所說的配置文件

實際上,我們可以利用這些層級概念的關(guān)系,根據(jù)自己的需要來實現(xiàn)多環(huán)境的管理。

下面我們一起來看看,幾種常見的環(huán)境隔離配置實現(xiàn)。

4.1.1、profiles 隔離實現(xiàn)

在上文中我們也提到了 dataId 完整格式生成規(guī)則。

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

因此,我們可以借助spring.profiles.active來實現(xiàn)配置資源的隔離。

同時,profiles 隔離實現(xiàn)也在一種最常見的做法。

4.1.2、Group 隔離實現(xiàn)

Group 隔離實現(xiàn)就比較簡單了,在 Nacos 服務(wù)管理平臺新建配置的時候,填寫所屬分組。

最后,在客戶端應(yīng)用下填寫對應(yīng)的 Group 參數(shù)即可。

# 對應(yīng) Group 參數(shù)
spring.cloud.nacos.config.group=DEFAULT_GROUP

4.1.3、Namespace 隔離實現(xiàn)

Namespace 隔離實現(xiàn)主要通過命名空間來完成,在 Nacos 服務(wù)管理平臺的命令空間下創(chuàng)建。

創(chuàng)建完成之后,在配置列表的最上方可以看到除了 public 之外,多了一個剛才創(chuàng)建的 Namepsace。

點擊test就可以切換到對應(yīng)的命名空間,然后新建相關(guān)的配置項。

最后,在客戶端應(yīng)用下填寫對應(yīng)的 Namespace 參數(shù)即可。

# 對應(yīng)配置的命名空間
spring.cloud.nacos.config.namespace=0c85c5cf-4421-4839-9998-ace7d8ecf5a8

需要注意的是,這里填寫不是命名空間的名稱,而是命名空間ID。

4.2、多文件加載介紹

在上文中我們介紹的都是單個配置文件的加載,而在實際的業(yè)務(wù)開發(fā)中,我們常常會碰到多個配置文件一起加載的場景,例如加載 Redis、RabbitMQ 等配置資源。

下面我們一起來看看相關(guān)的實現(xiàn)方式。

4.2.1、多個配置加載介紹

對于多個配置的加載,我們只需要做以下兩步,就可以實現(xiàn)這個需求。

第一步:在 Nacos 中創(chuàng)建Data ID=redis.propertiesData ID=rabbitmq.properties的配置內(nèi)容。

第二步:在 Spring Cloud 應(yīng)用bootstrap.properties文件中,通過spring.cloud.nacos.config.extension-configs參數(shù)配置需要加載的文件,具體如下。

# 設(shè)置多文件加載,并支持動態(tài)刷新
spring.cloud.nacos.config.extension-configs[0].data-id=redis.properties
spring.cloud.nacos.config.extension-configs[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.extension-configs[0].refresh=true
spring.cloud.nacos.config.extension-configs[1].data-id=rabbitmq.properties
spring.cloud.nacos.config.extension-configs[1].group=DEFAULT_GROUP
spring.cloud.nacos.config.extension-configs[1].refresh=true

當(dāng)服務(wù)啟動的時候,Nacos 客戶端會自動從服務(wù)端獲取相關(guān)的配置資源加載到 Spring Boot 應(yīng)用中。

4.2.2、共享配置加載介紹

通過上面加載多個配置文件的例子,我們已經(jīng)可以實現(xiàn)不同的應(yīng)用共享配置的需求了。

對于共享配置使用,Nacos 還提供了另一種更便捷的配置方式,比如下面的配置與上面使用的多文件加載配置,作用是等價的。

# 設(shè)置多個共享配置文件加載,并支持動態(tài)刷新
spring.cloud.nacos.config.shared-configs[0].data-id=redis.properties
spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].refresh=true
spring.cloud.nacos.config.shared-configs[1].data-id=rabbitmq.properties
spring.cloud.nacos.config.shared-configs[1].group=DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[1].refresh=true

4.2.3、配置加載的優(yōu)先級介紹

當(dāng)我們加載多個配置的時候,如果存在相同的 key,配置加載的優(yōu)先級是怎樣的呢?

Nacos Config 目前提供了三種配置能力從 Nacos 拉取相關(guān)的配置,分別如下:

  • A:通過spring.cloud.nacos.config.shared-dataids定義的共享配置
  • B:通過spring.cloud.nacos.config.ext-config[n].data-id定義的擴展配置
  • C:通過內(nèi)部相關(guān)規(guī)則(應(yīng)用名、應(yīng)用名+ Profile)生成的配置

當(dāng)三種方式同時存在的時候,他們的優(yōu)先級關(guān)系為A < B < C,也就是說優(yōu)先級高的會覆蓋優(yōu)先級底的配置。

最后總結(jié)一下:

Nacos 是 Spring Cloud Alibaba 體系中最重要的組件之一,既可以用于服務(wù)注冊中心,也可以用于服務(wù)配置中心。

在微服務(wù)技術(shù)體系中,應(yīng)用非常廣泛,因此掌握 Nacos 相關(guān)技術(shù)的使用,對我們項目的開發(fā)會有顯著的幫助。

五、實戰(zhàn)

1. 安裝與啟動 Nacos

下載 Nacos

從 Nacos 的 GitHub 倉庫(https://github.com/alibaba/nacos/releases)下載適合你系統(tǒng)的版本,解壓下載好的壓縮包。

啟動 Nacos

  • Windows 系統(tǒng):打開命令提示符,進入 Nacos 的 bin 目錄,執(zhí)行以下命令啟動 Nacos:
startup.cmd -m standalone
  • Linux/Mac 系統(tǒng):打開終端,進入 Nacos 的 bin 目錄,執(zhí)行以下命令啟動 Nacos:

這里的 -m standalone 表示以單機模式啟動。啟動成功后,在瀏覽器中訪問 http://localhost:8848/nacos,使用默認用戶名 nacos 和密碼 nacos 登錄 Nacos 控制臺。

2. 創(chuàng)建配置

登錄 Nacos 控制臺

打開瀏覽器,訪問 http://localhost:8848/nacos,輸入用戶名 nacos 和密碼 nacos 登錄。

創(chuàng)建配置文件

在控制臺左側(cè)導(dǎo)航欄中選擇 “配置管理” -> “配置列表”,點擊 “+” 號創(chuàng)建新的配置。填寫以下信息 

  • Data ID:配置文件的唯一標(biāo)識,通常采用 應(yīng)用名.properties應(yīng)用名.yml 的格式,例如 example-service.properties。
  • Group:配置分組,默認為 DEFAULT_GROUP。
  • 配置格式:根據(jù)實際情況選擇 propertiesyaml
  • 配置內(nèi)容:輸入具體的配置信息,例如在 example-service.properties 中可以添加如下內(nèi)容: 

properties

server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/example_db
spring.datasource.username=root
spring.datasource.password=123456

3. 在微服務(wù)中集成 Nacos 配置中心

添加依賴

以 Spring Boot 項目為例,在 pom.xml 中添加 Nacos 配置中心的依賴:

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

配置 Nacos 客戶端

src/main/resources 目錄下創(chuàng)建 bootstrap.propertiesbootstrap.yml 文件,添加以下配置:

spring.application.name=example-service
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.file-extension=properties

這里的 spring.application.name 要與在 Nacos 控制臺創(chuàng)建的配置文件的 Data ID 中的應(yīng)用名一致,spring.cloud.nacos.config.server-addr 是 Nacos 服務(wù)器的地址,spring.cloud.nacos.config.file-extension 是配置文件的格式。

獲取配置信息

在 Spring Boot 項目中,可以使用 @Value 注解或 @ConfigurationProperties 注解來獲取配置信息。

以下是使用 @Value 注解的示例:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigController {

    @Value("${server.port}")
    private String serverPort;

    @GetMapping("/config")
    public String getConfig() {
        return "Server port: " + serverPort;
    }
}

4. 動態(tài)刷新配置

開啟動態(tài)刷新

在需要動態(tài)刷新配置的類上添加 @RefreshScope 注解,例如:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope
public class ConfigController {

    @Value("${server.port}")
    private String serverPort;

    @GetMapping("/config")
    public String getConfig() {
        return "Server port: " + serverPort;
    }
}

測試動態(tài)刷新

當(dāng)在 Nacos 控制臺修改配置信息并發(fā)布后,無需重啟微服務(wù),調(diào)用 /config 接口即可獲取到最新的配置信息。

5. 多環(huán)境配置管理

創(chuàng)建不同環(huán)境的配置文件

在 Nacos 控制臺分別創(chuàng)建不同環(huán)境(如開發(fā)、測試、生產(chǎn))的配置文件,

例如 example-service-dev.properties、example-service-test.propertiesexample-service-prod.properties。

根據(jù)環(huán)境加載配置

bootstrap.properties 中添加 spring.profiles.active 屬性來指定當(dāng)前環(huán)境,例如:

spring.application.name=example-service
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.file-extension=properties
spring.profiles.active=dev

這樣,微服務(wù)將加載 example-service-dev.properties 中的配置信息。

通過以上步驟,你就可以使用 Nacos 打造一個功能完善的微服務(wù)配置中心,實現(xiàn)配置的集中管理和動態(tài)刷新。

六、總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

枞阳县| 崇义县| 长岭县| 无为县| 英山县| 石阡县| 开平市| 潍坊市| 阿荣旗| 手游| 睢宁县| 高邑县| 洛浦县| 溆浦县| 潍坊市| 邯郸市| 平塘县| 绥芬河市| 新沂市| 城固县| 建瓯市| 景泰县| 名山县| 虎林市| 双柏县| 滨海县| 湟源县| 普宁市| 白沙| 龙江县| 中江县| 科技| 定南县| 甘谷县| 安远县| 三台县| 巩留县| 辽阳市| 焦作市| 贵港市| 德昌县|