天天看點

SpringCloudAlibaba(二)Nacos配置中心實作微服務動态配置,SpringCloudAlibaba配置項詳解

文章目錄

    • 前言
    • 一、項目配置
    • 二、校驗動态配置
    • 三、SpringCloudAlibaba配置項介紹

前言

上一篇文章講了怎麼建立一個Maven聚合項目作為微服務開發腳手架,并且建立了一個認證微服務并注冊到注冊中心,這篇我們介紹下如何使用Nacos的配置中心,實作我們的動态配置。以及簡單介紹下SpringCloudAlibaba的各個配置項(可能是最全面SpringCloudAlibaba配置項介紹)

一、項目配置

  1. Nacos建立配置
    SpringCloudAlibaba(二)Nacos配置中心實作微服務動态配置,SpringCloudAlibaba配置項詳解
  2. 在項目的

    bootstarp.yml

    檔案添加配置中心相關配置
    server:
      port: 8080
    spring:
      profiles:
        active: dev
      application:
        name: auth
      cloud:
        nacos:
          server-addr: 127.0.0.1:8848
          discovery:
            group: FeasyApplication
            namespace: ${spring.profiles.active}
            log-name: ${spring.application.name}
            cluster-name: ${spring.application.name}-${spring.profiles.active}
          config:
            group: FeasyApplication
            namespace: ${spring.profiles.active}
            cluster-name: ${spring.application.name}-${spring.profiles.active}
            prefix: ${spring.application.name}
            file-extension: yaml
               

二、校驗動态配置

  1. 項目添加一個接口,用來輸出動态配置項的值,測試配置是否能夠正常動态重新整理

    @RefreshScope

    這個注解表示,目前類下加載的配置資訊,支援動态重新整理
    package org.feasy.cloud.auth.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;
    
    /**
     * @author YangXiaohui
     * @since 2020/12/23 16:18
     */
    @RefreshScope
    @RestController
    public class TestController {
        @Value("${test.config:}")
        private String config;
    
        @GetMapping("/testConfig")
        public String testConfig(){
            return config;
        }
    }
    
               
  2. 啟動項目并通路接口

    可以看到輸出了剛才的配置内容

    SpringCloudAlibaba(二)Nacos配置中心實作微服務動态配置,SpringCloudAlibaba配置項詳解
  3. 編輯配置中心配置檔案并釋出
    SpringCloudAlibaba(二)Nacos配置中心實作微服務動态配置,SpringCloudAlibaba配置項詳解
  4. 通路接口看到配置内容已經變了
    SpringCloudAlibaba(二)Nacos配置中心實作微服務動态配置,SpringCloudAlibaba配置項詳解
  5. 檢視控制台,有輸出監聽到配置檔案變化并且重新整理了配置内容
    SpringCloudAlibaba(二)Nacos配置中心實作微服務動态配置,SpringCloudAlibaba配置項詳解

三、SpringCloudAlibaba配置項介紹

在我們開發微服務的時候,

spring.application.name=服務名

是各個微服務必須配置的,它是這個服務在整個注冊中心的唯一辨別,在注冊中心可以用來管理微服務,并且在配置中心會使用該值作為字首進行預設比對配置檔案。

通用配置

配置項 預設值 備注
spring.cloud.nacos.server-addr localhost:8848 Nacos服務位址
spring.cloud.nacos.username Nacos使用者名(僅在Nacos開啟了安全模式時有效)
spring.cloud.nacos.password Nacos密碼(僅在Nacos開啟了安全模式時有效)

注冊中心配置

配置項 預設值 備注
spring.cloud.nacos.discovery.server-addr ${spring.cloud.nacos.server-addr} 注冊中心Nacos位址
spring.cloud.nacos.discovery.username ${spring.cloud.nacos.username} 注冊中心Nacos使用者名(僅在Nacos開啟了安全模式時有效)
spring.cloud.nacos.discovery.password ${spring.cloud.nacos.password} 注冊中心Nacos密碼(僅在Nacos開啟了安全模式時有效)
spring.cloud.nacos.discovery.weight 1 服務在注冊中心的權重值,取值範圍 1 到 100,數值越大,權重越大
spring.cloud.nacos.discovery.enabled true 是否要把目前服務注冊到注冊中心
spring.cloud.nacos.discovery.register-enabled true 是否作為服務提供者注冊到注冊中心,如果關閉該選項,則隻作為服務消費者注冊
spring.cloud.nacos.discovery.instance-enabled true 是否允許其他服務通路調用
spring.cloud.nacos.discovery.network-interface 當IP未配置時,注冊的IP為此網卡所對應的IP位址,如果此項也未配置,則預設取第一塊網卡的位址
spring.cloud.nacos.discovery.ip 1 在注冊中心,該服務的注冊IP位址,這個配置項優先級是最高的
spring.cloud.nacos.discovery.port 1 服務注冊端口,預設情況下不用配置,會自動探測
spring.cloud.nacos.discovery.endpoint 服務的域名,通過該域名可以動态擷取伺服器位址。
spring.cloud.nacos.discovery.service ${spring.application.name} 注冊的服務名
spring.cloud.nacos.discovery.namespace 在Nacos内的命名空間ID,可以用來做開發、測試、生産環境隔離
spring.cloud.nacos.discovery.group DEFAULT 服務分組,如果兩個服務不在同一個分組内,則不能通過内部服務調用進行通路
spring.cloud.nacos.discovery.cluster-name DEFAULT Nacos叢集名稱
spring.cloud.nacos.discovery.access-key 如果使用的是阿裡雲的Nacos,這裡需要配置阿裡雲的AccessKey
spring.cloud.nacos.discovery.secret-key 如果使用的是阿裡雲的Nacos,這裡需要配置阿裡雲的SecretKey
spring.cloud.nacos.discovery.log-name Nacos服務Log名稱
spring.cloud.nacos.discovery.watch.enabled true 是否開啟Nacos Watch,是否要拉取服務系統資料庫,如果關閉該選項,内部服務調用會失敗。
spring.cloud.nacos.discovery.watch-delay 30 預設為30s。用戶端在啟動時會建立一個線程池,該線程定期去查詢服務端的資訊清單(系統資料庫),該請求不會立刻傳回,預設等待30s,若在30s内,服務端資訊清單發生變化,則該請求立刻傳回,通知用戶端拉取服務端的服務資訊清單,若30s内,沒有變化,則30s時該請求傳回響應,用戶端服務清單不變,再次發生該請求。注:推薦該值為30s即可,無需修改
spring.cloud.nacos.discovery.secure false 您的服務是否為Https服務
spring.cloud.nacos.discovery.heart-beat-interval 5 服務向注冊中心發送心跳的時間間隔,預設5秒
spring.cloud.nacos.discovery.heart-beat-timeout 15 注冊中心沒有接受到服務心跳請求就将其設為不健康的時間間隔,預設為15s.
spring.cloud.nacos.discovery.ip-delete-timeout 30 注冊中心删除不健康服務的時間間隔
spring.cloud.nacos.discovery.naming-load-cache-at-start false 預設為false。用戶端在啟動時是否讀取本地配置項(一個檔案)來擷取服務清單。注:推薦該值為false,若改成true。則用戶端會在本地的一個檔案中儲存服務資訊,當下次當機啟動時,會優先讀取本地的配置對外提供服務。
spring.cloud.nacos.discovery.ephemeral true 該服務是否需要頻繁向注冊中心發送心跳,來保證該服務是一直健康可用的
spring.cloud.nacos.discovery.metadata 服務注冊中繼資料,在注冊中心可以看到的服務中繼資料

配置中心配置

配置項 預設值 備注
spring.cloud.nacos.config.server-addr ${spring.cloud.nacos.server-addr} 配置中心Nacos位址
spring.cloud.nacos.config.username ${spring.cloud.nacos.username} 配置中心Nacos使用者名(僅在Nacos開啟了安全模式時有效)
spring.cloud.nacos.config.password ${spring.cloud.nacos.password} 配置中心Nacos密碼(僅在Nacos開啟了安全模式時有效)
spring.cloud.nacos.config.access-key 如果使用的是阿裡雲的Nacos,這裡需要配置阿裡雲的AccessKey
spring.cloud.nacos.config.secret-key 如果使用的是阿裡雲的Nacos,這裡需要配置阿裡雲的SecretKey
spring.cloud.nacos.config.namespace 在Nacos内的命名空間ID,可以用來做開發、測試、生産環境隔離
spring.cloud.nacos.config.group DEFAULT 服務分組,如果配置檔案的分組和該配置不在同一個分組内,則不能正常加載配置
spring.cloud.nacos.config.cluster-name DEFAULT Nacos叢集名稱
spring.cloud.nacos.config.name 配置中心配置名稱
spring.cloud.nacos.config.prefix ${spring.application.name} 配置中心配置字首值
spring.cloud.nacos.config.file-extension properties 配置檔案類型:properties、yml…
spring.cloud.nacos.config.refresh-enabled true 是否要從配置中心動态重新整理配置
spring.cloud.nacos.config.context-path Nacos配置伺服器的上下文路徑
spring.cloud.nacos.config.enabled true 是否啟用配置服務端點
spring.cloud.nacos.config.encode UTF-8 配置中心配置檔案編碼格式
spring.cloud.nacos.config.endpoint Nacos的端點,即服務的域名,通過該域名可以動态擷取伺服器位址。
spring.cloud.nacos.config.enable-remote-sync-config true 如果要在程式首次開始擷取配置時自己拉它,并且已注冊的偵聽器用于将來的配置更新,則可以保持原始代碼不變,隻需添加系統參數:enableRemoteSyncConfig =“ true” (但是有網絡開銷)
spring.cloud.nacos.config.extension-configs 加載其他拓展配置
spring.cloud.nacos.config.shared-configs 加載其他共享配置
spring.cloud.nacos.config.timeout 3000ms 連接配接配置中心逾時時間
spring.cloud.nacos.config.config-long-poll-timeout nacos擷取配置逾時時間
spring.cloud.nacos.config.config-retry-time nacos擷取配置失敗重試間隔時間
spring.cloud.nacos.config.max-retry 加載配置最大重試次數
spring.cloud.nacos.config.environment 環境變量配置

繼續閱讀