欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot3整合Nacos?V2.3.2的詳細過程

 更新時間:2024年11月20日 10:33:51   作者:CoderJia  
本文介紹了如何在?Spring?Boot?3.2.x?項目中整合?Nacos?2.3.2,包括依賴配置、Nacos?服務(wù)發(fā)現(xiàn)與動態(tài)配置的配置方法,通過整合?Nacos,Spring?Boot?應(yīng)用可以實現(xiàn)高效的服務(wù)發(fā)現(xiàn)、動態(tài)配置管理以及分布式系統(tǒng)中的靈活擴展,感興趣的朋友跟隨小編一起看看吧

隨著微服務(wù)架構(gòu)的廣泛應(yīng)用,服務(wù)注冊與發(fā)現(xiàn)的需求變得越來越重要。Nacos(Dynamic Naming and Configuration Service 首字母)作為一個開源的、動態(tài)的服務(wù)發(fā)現(xiàn)與配置管理平臺,已成為許多開發(fā)者的首選工具。Spring Boot 與 Nacos 的整合能夠幫助開發(fā)者快速實現(xiàn)服務(wù)注冊、配置管理以及動態(tài)控制等功能。

本文將詳細介紹如何將 Spring Boot 3.2.xNacos 2.3.2 進行整合,包括功能介紹、版本依賴、整合過程中的細節(jié)及效果演示。

1. Nacos 簡介與功能

Nacos 是一個易于使用的、支持多種服務(wù)發(fā)現(xiàn)和配置管理的開源項目。它提供了如下核心功能:

  • 服務(wù)發(fā)現(xiàn)與健康檢查:支持通過 HTTP、DNS 和 gRPC 協(xié)議進行服務(wù)注冊與發(fā)現(xiàn),同時可以對注冊的服務(wù)進行健康檢查。
  • 動態(tài)配置管理:提供配置管理功能,允許開發(fā)者在不重啟服務(wù)的情況下修改應(yīng)用配置,并實時生效。
  • 動態(tài) DNS 服務(wù):支持通過 DNS 查詢服務(wù)實例的地址,實現(xiàn)更加靈活的服務(wù)發(fā)現(xiàn)。
  • 分布式配置管理:能夠為不同的環(huán)境、應(yīng)用提供差異化的配置管理。

版本說明

Nacos 1.x 已經(jīng)停止功能維護,請盡快升級到 2.x 版本。并且 Nacos 版本依賴 SpringBoot、Spring Cloud 的版本,對于剛剛升級到 springboot3 的小伙伴來說,會遇到很多莫名其妙的問題,大多數(shù)都是由于版本依賴造成的問題,建議直接到官網(wǎng)找推薦的版本組合,springcloud alibaba與springboot版本對應(yīng)。

親測 SpringBoot 3.2.x + Nacos 2.3.2 + SpringCloud 2023.0.1.0 組合可用,下面介紹也將基于此版本組合講解。

2. Spring Boot 3.2.x 與 Nacos 2.3.2 整合的步驟

2.1 運行Nacos服務(wù)

多種運行方式見官網(wǎng):https://nacos.io/docs/latest/quickstart/quick-start/,本地直接使用docker安裝即可運行。

Nacos 2.x 除了 8848 端口以為還需要占用以下端口,如果云服務(wù)器部署需要放行端口號。

兼容性說明見:https://nacos.io/docs/v2/upgrading/version2-compatibility/

運行nacos服務(wù)后,還需設(shè)置密碼,創(chuàng)建命名空間,新建配置等。

2.2 添加依賴

首先,你需要在 Spring Boot 項目中添加 Nacos 的相關(guān)依賴。Nacos 提供了一個官方的 Spring Cloud Alibaba 依賴包來支持 Spring Boot 項目的集成。

修改 pom.xml 文件,添加如下依賴:

<dependencies>
    <!-- Spring Boot Web依賴 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Spring Boot與Nacos整合的核心依賴 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2023.0.1.0</version> <!-- 與Spring Boot 3.2.x兼容 -->
    </dependency>
    <!-- 配置管理依賴,如果你需要配置管理功能 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        <version>2023.0.1.0</version>
    </dependency>
    <!--提供了引導(dǎo)配置的支持,允許應(yīng)用程序在啟動時從外部配置中心(如 Nacos、Consul、Config Server 等)加載配置。-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
        <version>4.1.4</version>
    </dependency>
</dependencies>

注意:這里的 spring-cloud-starter-alibaba-nacos-discoveryspring-cloud-starter-alibaba-nacos-config 是 Spring Cloud Alibaba 相關(guān)的 starter。2023.0.1.0 版本與 Spring Boot 3.2.x 兼容。

2.3 配置 Nacos 連接

bootstrap.propertiesbootstrap.yml 文件中,配置 Nacos 服務(wù)的連接信息。配置如下:

為什么要bootstrap.yml?用在應(yīng)用程序啟動的早期階段,通過 bootstrap.yml 或 bootstrap.properties 文件加載配置,這些配置可以在主應(yīng)用配置之前生效。spring-cloud-starter-bootstrap 提供了引導(dǎo)配置的支持。

spring:
  application:
    name: spring-boot3-14-nacos
  profiles:
    active: local # 切換環(huán)境
  cloud:
    nacos:
      config:
        server-addr: 1.94.x.x:8848
        namespace: c77472dd-768c-42b0-8755-b6d87af491cf # 填命名空間id
        file-extension: yaml
        group: DEFAULT_GROUP
        refresh-enabled: true
        # 如果開啟認證的話需要用戶名和密碼
        username: nacosu
        password: nacosu
      discovery:
        server-addr: 1.94.26.81:8848
        namespace: c77472dd-768c-42b0-8755-b6d87af491cf
        # 如果開啟認證的話需要用戶名和密碼
        username: nacosu
        password: nacosu

配置項說明

更多關(guān)于 spring-cloud-starter-alibaba-nacos-config 的 starter 配置項如下所示:

配置項key默認值說明
服務(wù)端地址spring.cloud.nacos.config.server-addr服務(wù)器 ip 和端口
DataId 前綴spring.cloud.nacos.config.prefix${spring.application.name}DataId 的前綴,默認值為應(yīng)用名稱
Groupspring.cloud.nacos.config.groupDEFAULT_GROUP分組
DataId 后綴及內(nèi)容文件格式spring.cloud.nacos.config.file-extensionpropertiesDataId 的后綴,同時也是配置內(nèi)容的文件格式,目前只支持 properties、yaml
配置內(nèi)容的編碼方式spring.cloud.nacos.config.encodeUTF-8配置的編碼
獲取配置的超時時間spring.cloud.nacos.config.timeout3000單位為 ms
配置的命名空間spring.cloud.nacos.config.namespace常用場景之一是不同環(huán)境的配置的區(qū)分隔離,例如開發(fā)測試環(huán)境和生產(chǎn)環(huán)境的資源隔離等。
AccessKeyspring.cloud.nacos.config.access-key
SecretKeyspring.cloud.nacos.config.secret-key
相對路徑spring.cloud.nacos.config.context-path服務(wù)端 API 的相對路徑
接入點spring.cloud.nacos.config.endpoint地域的某個服務(wù)的入口域名,通過此域名可以動態(tài)地拿到服務(wù)端地址
是否開啟監(jiān)聽和自動刷新spring.cloud.nacos.config.refresh-enabledtrue
集群服務(wù)名spring.cloud.nacos.config.cluster-name

推薦方式

由于配置寫到配置文件中,不便于修改不同環(huán)境的參數(shù),且容易泄露敏感信息,一般建議如下寫法:

spring:
  application:
    name: spring-boot3-14-nacos
  profiles:
      active: ${PROFILE}
  cloud:
    nacos:
      discovery:
        server-addr: ${DISCOVERY_SVC}
        namespace: ${NAMESPACE_ID}
        username: ${NACOS_USER}
        password: ${NACOS_PWD}
      config:
        server-addr: ${DISCOVERY_SVC}
        namespace: ${NAMESPACE_ID}
        group: ${GROUP}
        file-extension: yaml
        username: ${NACOS_USER}
        password: ${NACOS_PWD}

啟動時使用命令行參數(shù)給配置賦值:

--spring.application.json={\"PROFILE\":\"dev\",\"DISCOVERY_SVC\":\"1.94.x.x:8848\",\"NAMESPACE\":\"demo\",\"GROUP\":\"DEFAULT_GROUP\",\"NAMESPACE_ID\":\"c77472dd-768c-42b0-8755-b6d87af491cf\",\"NACOS_USER\":\"nacosu\",\"NACOS_PWD\":\"nacosu\"}

2.4 配置 Nacos 注冊與發(fā)現(xiàn)

@SpringBootApplication 或其他配置類上添加 @EnableDiscoveryClient 啟用 Nacos 服務(wù)發(fā)現(xiàn)功能:

@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {
  public static void main(String[] args) {
    SpringApplication.run(NacosProviderApplication.class, args);
  }
  @RestController
  class EchoController {
    @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
    public String echo(@PathVariable String string) {
      return "Hello Nacos Discovery " + string;
    }
  }
}

服務(wù)發(fā)現(xiàn)

2.5 配置 Nacos 動態(tài)配置功能

如果你想使用 Nacos 的配置管理功能,可以在應(yīng)用中添加配置類, Spring Cloud 原生注解 @RefreshScope 實現(xiàn)配置自動更新:

代碼示例

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
    @Value("${useLocalCache:false}")
    private boolean useLocalCache;
    @RequestMapping("/get")
    public boolean get() {
        return useLocalCache;
    }
}

效果

3. 常見問題與解決方法

3.1 連接 Nacos 失敗

如果 Spring Boot 應(yīng)用無法連接 Nacos 服務(wù),可能是以下原因:

  • 檢查 spring.cloud.nacos.discovery.server-addr 配置項的地址是否正確。
  • 確保 Nacos 服務(wù)端口未被防火墻或其他網(wǎng)絡(luò)配置阻塞,8848、9848、9845。
  • 配置文件未使用 bootstrap.yml 或者 bootstrap.properties 。

3.2 服務(wù)未能成功注冊到 Nacos

  • 確認 @EnableDiscoveryClient 注解是否正確添加到啟動類。
  • 確認 spring.application.name 配置項是否設(shè)置為應(yīng)用名稱。
  • 檢查 Nacos 控制臺中是否存在其他錯誤信息。

3.3 服務(wù)注冊成功,配置拿不到

首先排除掉版本兼容問題,其他可能原因:

  • namespace 配置項錯誤填入了 namesapce 名稱,應(yīng)該填 namespaceId。
  • dataId 的完整格式 ${prefix}-${spring.profiles.active}.${file-extension},當 spring.profiles.active 為空時,對應(yīng)的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}

3.4 No spring.config.import property has been defined

產(chǎn)生問題的原因是 bootstrap.yml 比 application.properties 的優(yōu)先級要高。由于 bootstrap.yml 是系統(tǒng)級的資源配置文件,是用在程序引導(dǎo)執(zhí)行時更加早期配置信息讀??;但是在SpringCloud 2020.* 以后版本把 bootstrap 禁用了,導(dǎo)致在讀取文件的時候讀取不到而報錯,所以我們只要把 bootstrap 從新導(dǎo)入進來就會生效了。

        <!--提供了引導(dǎo)配置的支持,允許應(yīng)用程序在啟動時從外部配置中心(如 Nacos、Consul、Config Server 等)加載配置。-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>4.1.4</version>
        </dependency>

4. 總結(jié)

本文介紹了如何在 Spring Boot 3.2.x 項目中整合 Nacos 2.3.2,包括依賴配置、Nacos 服務(wù)發(fā)現(xiàn)與動態(tài)配置的配置方法。通過整合 Nacos,Spring Boot 應(yīng)用可以實現(xiàn)高效的服務(wù)發(fā)現(xiàn)、動態(tài)配置管理以及分布式系統(tǒng)中的靈活擴展。希望通過本篇博客,您能順利完成 Spring Boot 與 Nacos 的整合,并提升開發(fā)效率和系統(tǒng)的靈活性。

到此這篇關(guān)于SpringBoot3-如何整合Nacos V2.3.2的文章就介紹到這了,更多相關(guān)SpringBoot整合Nacos內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論