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

SpringBoot整合Nacos注冊中心的實現(xiàn)示例

 更新時間:2025年07月11日 09:24:35   作者:Cloud_.  
本文通過Nacos實現(xiàn)SpringBoot與SpringCloudGateway的配置熱更新、共享配置及動態(tài)路由,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在微服務(wù)架構(gòu)中,配置管理和動態(tài)路由是核心需求。Nacos 作為阿里巴巴開源的動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺,能夠幫助開發(fā)者實現(xiàn)配置熱更新、多環(huán)境共享配置以及動態(tài)路由管理。本文將結(jié)合 Spring BootSpring Cloud Gateway,手把手教你實現(xiàn)以下功能:包含版本選擇、核心配置、心跳機制及常見問題

  • 配置熱部署:不重啟服務(wù)實時更新配置(如Redis參數(shù))。
  • 共享配置:多服務(wù)復(fù)用同一份公共配置(如公共Redis、數(shù)據(jù)庫連接)。
  • 動態(tài)路由:通過Nacos動態(tài)調(diào)整網(wǎng)關(guān)路由規(guī)則

一、環(huán)境準備

1.1 組件版本要求

組件推薦版本說明
Spring Boot2.6.x長期支持版本
Spring Cloud Alibaba2021.0.5.0與Spring Boot 2.6.x兼容
Nacos Server2.0.3穩(wěn)定生產(chǎn)版本

版本匹配至關(guān)重要! 參考官方版本關(guān)系

1.2 啟動Nacos Server

# 單機模式啟動(默認端口8848)
sh nacos/bin/startup.sh -m standalone

# 訪問控制臺
http://localhost:8848/nacos
默認賬號:nacos/nacos

二、Spring Boot 整合步驟

2.1 手動添加依賴(可選)

若未通過Initializr創(chuàng)建,需添加:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2021.0.5.0</version>
</dependency>

<!-- Spring Cloud 版本管理 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2021.0.5.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2.2核心配置

application.yml 配置示例:

spring:
  application:
    name: order-service  # 服務(wù)名稱(Nacos按此名稱分組)
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848  # Nacos地址
        namespace: dev  # 命名空間ID(非名稱)
        group: PROD_GROUP  # 自定義分組
        ephemeral: false  # 是否臨時實例(默認為true)
        # 高級配置
        metadata: 
          version: v1.0
          region: hangzhou

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

在啟動類添加注解:

@SpringBootApplication
@EnableDiscoveryClient  // 關(guān)鍵注解
public class OrderServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderServiceApplication.class, args);
    }
}

三、高級配置技巧

3.1 心跳與健康檢查

spring:
  cloud:
    nacos:
      discovery:
        # 心跳間隔(單位ms,默認5000)
        heart-beat-interval: 3000
        # 心跳超時(單位ms,默認15000)
        heart-beat-timeout: 10000
        # 實例過期時間(單位秒,默認90)
        instance-expire-seconds: 30

3.2 權(quán)重與保護閾值

spring:
  cloud:
    nacos:
      discovery:
        # 實例權(quán)重(0-1,默認1)
        weight: 0.8
        # 集群保護閾值(0-1,默認0)
        protection-threshold: 0.5

3.3 多網(wǎng)卡IP指定

spring:
  cloud:
    nacos:
      discovery:
        # 指定注冊IP(Docker環(huán)境常用)
        ip: 192.168.1.100
        # 指定IP類型
        ip-type: IPv4

四、驗證服務(wù)注冊

4.1 檢查控制臺

登錄Nacos控制臺 → 服務(wù)列表 → 查看服務(wù)狀態(tài)

4.2 查看注冊日志

在應(yīng)用啟動日志中搜索:

2023-10-01 12:00:00 INFO  o.s.c.a.n.registry.NacosServiceRegistry  : nacos registry, order-service 192.168.1.100:8080 register finished

五、常見問題解決方案

5.1 服務(wù)未注冊排查流程

  • 檢查Nacos Server是否正常運行
  • 確認spring.cloud.nacos.discovery.server-addr配置正確
  • 查看客戶端日志是否有注冊異常
  • 驗證網(wǎng)絡(luò)連通性(telnet 8848)
  • 檢查版本兼容性

5.2 典型錯誤處理

錯誤現(xiàn)象Connection refused (Connection refused)
解決方案

spring:
  cloud:
    nacos:
      discovery:
        # 使用完整URL格式
        server-addr: http://nacos.example.com:8848

錯誤現(xiàn)象no server available
解決方案

// 添加JVM參數(shù)指定Nacos地址
-Dspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

以上我們就做好了Nacos的配置接下來實現(xiàn)熱部署、共享配置與動態(tài)路由

Spring Boot整合Nacos實現(xiàn)熱部署、共享配置與動態(tài)路由

一.項目依賴

pom.xml中添加依賴:

<!-- Spring Cloud Alibaba Nacos Config -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2022.0.0.0</version>
</dependency>

<!-- Spring Cloud Gateway -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

二、配置熱部署與共享配置

1.配置熱更新

目標:修改Nacos中的配置后,應(yīng)用實時生效(無需重啟)。

步驟:

創(chuàng)建配置文件
在Nacos控制臺新建配置,Data ID為service-order.yaml(格式為${spring.application.name}.yaml),內(nèi)容如下:

redis:
  host: 127.0.0.1
  port: 6379

Spring Boot配置
在bootstrap.yml中指定Nacos配置源:

spring:
  application:
    name: service-order
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml
        namespace: dev  # 可選,指定命名空間

動態(tài)刷新配置
在需要熱更新的Bean上添加@RefreshScope:

@RestController
@RefreshScope
public class ConfigController {
    @Value("${redis.host}")
    private String redisHost;

    @GetMapping("/redis-host")
    public String getRedisHost() {
        return redisHost;
    }
}

驗證

  • 修改Nacos中redis.host的值,訪問/redis-host接口,觀察返回值是否實時更新。

2.共享公共配置

目標:多個服務(wù)復(fù)用同一份配置(如公共Redis、MySQL連接)。

步驟:

創(chuàng)建共享配置
在Nacos中新建common-redis.yaml,內(nèi)容如下:

redis:
  host: 192.168.1.100
  port: 6379
  password: 123456

服務(wù)引用共享配置
修改服務(wù)的bootstrap.yml,添加共享配置:

spring:
  cloud:
    nacos:
      config:
        shared-configs:
          - data-id: common-redis.yaml
            refresh: true  # 開啟動態(tài)刷新

優(yōu)先級:

  • 服務(wù)私有配置 > 共享配置 > 默認配置。

三、Nacos整合Gateway實現(xiàn)動態(tài)路由

目標:通過Nacos動態(tài)管理網(wǎng)關(guān)路由規(guī)則,無需重啟網(wǎng)關(guān)服務(wù)。

1.配置動態(tài)路由

創(chuàng)建路由配置
在Nacos中新建gateway-routes.yaml,內(nèi)容如下(JSON格式):

routes:
  - id: user-service
    uri: lb://service-user  # 負載均衡到用戶服務(wù)
    predicates:
      - Path=/user/**
    filters:
      - StripPrefix=1

Gateway監(jiān)聽Nacos配置
添加NacosRouteDefinitionRepository類實現(xiàn)動態(tài)路由加載:

@Component
public class NacosRouteDefinitionRepository implements RouteDefinitionRepository {
    @Autowired
    private NacosConfigManager nacosConfigManager;

    @Override
    public Flux<RouteDefinition> getRouteDefinitions() {
        String config = nacosConfigManager.getConfigService()
                .getConfig("gateway-routes.yaml", "DEFAULT_GROUP", 5000);
        List<RouteDefinition> routes = JSON.parseArray(config, RouteDefinition.class);
        return Flux.fromIterable(routes);
    }

    // 監(jiān)聽配置變化
    @PostConstruct
    public void init() {
        nacosConfigManager.getConfigService().addListener(
                "gateway-routes.yaml", "DEFAULT_GROUP",
                new AbstractListener() {
                    @Override
                    public void receiveConfigInfo(String configInfo) {
                        // 觸發(fā)路由刷新
                        ApplicationEventPublisher.publishEvent(new RefreshRoutesEvent(this));
                    }
                });
    }
}

2.驗證動態(tài)路由

  • 初始路由生效:訪問http://localhost:8080/user/1,請求應(yīng)轉(zhuǎn)發(fā)至service-user服務(wù)。
  • 動態(tài)更新:在Nacos中修改gateway-routes.yaml,添加新的路由規(guī)則,觀察網(wǎng)關(guān)是否自動生效。

四、總結(jié)與最佳實踐

核心功能總結(jié)

功能實現(xiàn)方案優(yōu)勢
熱部署@RefreshScope + Nacos配置監(jiān)聽實時更新配置,避免服務(wù)重啟
共享配置shared-configs引用公共Data ID統(tǒng)一管理,減少冗余配置
動態(tài)路由監(jiān)聽Nacos配置 + RefreshRoutesEvent靈活調(diào)整流量,支持灰度發(fā)布

注意事項

  1. 配置格式:Nacos中的動態(tài)路由需使用JSON或YAML格式。
  2. 性能優(yōu)化:頻繁配置更新可能影響網(wǎng)關(guān)性能,建議合理設(shè)置刷新間隔。
  3. 安全加固:Nacos配置需設(shè)置權(quán)限控制,避免敏感信息泄露。

到此這篇關(guān)于SpringBoot整合Nacos注冊中心的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)SpringBoot Nacos注冊中心內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 輸出java進程的jstack信息示例分享 通過線程堆棧信息分析java線程

    輸出java進程的jstack信息示例分享 通過線程堆棧信息分析java線程

    通過ps到j(luò)ava進程號將進程的jstack信息輸出。jstack信息是java進程的線程堆棧信息,通過該信息可以分析java的線程阻塞等問題。
    2014-01-01
  • java查看當前jvm項目使用的垃圾回收器的實現(xiàn)方式

    java查看當前jvm項目使用的垃圾回收器的實現(xiàn)方式

    文章介紹了三種方法來查看Java應(yīng)用程序使用的垃圾回收器:使用jconsole工具、運行代碼打印參數(shù)以及使用命令行查看jps和vm參數(shù),默認情況下,Java 8使用ParallelGC垃圾回收器,其中老年代使用ParallelOldGC
    2026-03-03
  • Java:com.netflix.client.ClientException錯誤解決

    Java:com.netflix.client.ClientException錯誤解決

    本文主要介紹了Java:com.netflix.client.ClientException錯誤解決,主要是指出客戶端?module-sso?試圖通過負載均衡器訪問服務(wù)時,負載均衡器沒有找到可用的服務(wù)器來處理請求,下面就來介紹一下解決方法
    2024-08-08
  • Java中優(yōu)先隊列PriorityQueue常用方法示例

    Java中優(yōu)先隊列PriorityQueue常用方法示例

    這篇文章主要介紹了Java中優(yōu)先隊列PriorityQueue常用方法示例,PriorityQueue是一種特殊的隊列,滿足隊列的“隊尾進、隊頭出”條件,但是每次插入或刪除元素后,都對隊列進行調(diào)整,使得隊列始終構(gòu)成最小堆(或最大堆),需要的朋友可以參考下
    2023-09-09
  • Java設(shè)計模式之責任鏈模式

    Java設(shè)計模式之責任鏈模式

    今天小編就為大家分享一篇關(guān)于Java設(shè)計模式之責任鏈模式,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • linux配置jdk環(huán)境變量簡單教程

    linux配置jdk環(huán)境變量簡單教程

    這篇文章主要為大家詳細介紹了linux配置jdk環(huán)境變量簡單教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 一文帶你深入了解Java?String的不可變性

    一文帶你深入了解Java?String的不可變性

    這篇文章主要來和大家一起深入探討一下Java?String中的不可變性,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • 詳解SpringBoot容器的生命周期

    詳解SpringBoot容器的生命周期

    在使用SpringBoot進行開發(fā)時,我們經(jīng)常需要對Spring容器的生命周期進行了解和掌握,本文將介紹SpringBoot容器的生命周期,包括容器的創(chuàng)建、初始化、銷毀等過程,并提供相應(yīng)的代碼示例
    2023-06-06
  • cxf整合Spring實現(xiàn)webservice調(diào)用實踐

    cxf整合Spring實現(xiàn)webservice調(diào)用實踐

    文章介紹了使用CXF整合Spring實現(xiàn)WebService的過程,包括pom文件配置、web.xml和applicationContext.xml文件配置、接口定義與實現(xiàn)、項目運行及測試,通過訪問wsdl地址驗證服務(wù)可用性,最后通過客戶端測試類驗證調(diào)用成功
    2026-04-04
  • JDK集合源碼之解析TreeMap(二)

    JDK集合源碼之解析TreeMap(二)

    下面小編就為大家?guī)硪黄獪\談java中的TreeMap 排序與TreeSet 排序。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-07-07

最新評論

辰溪县| 长沙市| 昌宁县| 册亨县| 隆化县| 通城县| 临泉县| 阜阳市| 奉贤区| 库尔勒市| 漳平市| 西畴县| 尼勒克县| 眉山市| 蒙阴县| 库尔勒市| 镇江市| 夏河县| 石嘴山市| 皮山县| 报价| 库车县| 肥城市| 临泉县| 资阳市| 建昌县| 中方县| 山丹县| 佛山市| 武邑县| 任丘市| 新郑市| 万源市| 黄大仙区| 荆州市| 晋城| 姜堰市| 太康县| 商水县| 化州市| 佛山市|