文章目錄
-
- 前言
- 一、項目配置
- 二、校驗動态配置
- 三、SpringCloudAlibaba配置項介紹
前言
上一篇文章講了怎麼建立一個Maven聚合項目作為微服務開發腳手架,并且建立了一個認證微服務并注冊到注冊中心,這篇我們介紹下如何使用Nacos的配置中心,實作我們的動态配置。以及簡單介紹下SpringCloudAlibaba的各個配置項(可能是最全面SpringCloudAlibaba配置項介紹)
一、項目配置
- Nacos建立配置
SpringCloudAlibaba(二)Nacos配置中心實作微服務動态配置,SpringCloudAlibaba配置項詳解 - 在項目的
檔案添加配置中心相關配置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
二、校驗動态配置
- 項目添加一個接口,用來輸出動态配置項的值,測試配置是否能夠正常動态重新整理
這個注解表示,目前類下加載的配置資訊,支援動态重新整理@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; } }
-
啟動項目并通路接口
可以看到輸出了剛才的配置内容
SpringCloudAlibaba(二)Nacos配置中心實作微服務動态配置,SpringCloudAlibaba配置項詳解 - 編輯配置中心配置檔案并釋出
SpringCloudAlibaba(二)Nacos配置中心實作微服務動态配置,SpringCloudAlibaba配置項詳解 - 通路接口看到配置内容已經變了
SpringCloudAlibaba(二)Nacos配置中心實作微服務動态配置,SpringCloudAlibaba配置項詳解 - 檢視控制台,有輸出監聽到配置檔案變化并且重新整理了配置内容
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 | 環境變量配置 |