SpringCloud 簡介
html
SpringCloud 版本選型
java
SpringCloud 工程構建
git
SpringCloud —— Eureka 註冊中心
web
SpringCloud —— 服務註冊進 Eureka 集羣
spring
SpringCloud —— Eureka 自我保護
bootstrap
SpringCloud —— SpringCloud Consul 實現服務註冊中心
app
SpringCloud —— 三個註冊中心的異同點
負載均衡
SpringCloud —— HystrixDashboard 服務監控
SpringCloud —— Sleuth 分佈式請求鏈路跟蹤
SpringCloud Alibaba —— Nacos 服務註冊
SpringCloud Alibaba 退出的 Nacos 除了能夠實現註冊中心之外,還能夠實現配置中心,並且實現很是簡單,下面就用 Nacos 實現配置中心
目錄結構以下:
老規矩,不需添加的依賴能夠不加
<dependencies> <!-- Nacos Config --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!-- SpringCloud Alibaba Nacos--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- SpringBoot整合Web組件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--平常通用jar包配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>RELEASE</version> <scope>test</scope> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>RELEASE</version> <scope>test</scope> </dependency> </dependencies>
這裏須要配置兩個 yml 文件,爲何須要配置兩個 yml 文件呢?
Nacos 與 SpringCloud-Config 同樣,在項目初始化時,要保證先從配置中心進行配置權限,拉取配置以後,才能保證項目的正常啓動
SpringBoot 中配置文件的加載是存在優先級順序的,bootstrap 優先級高於 application
# Nacos 配置 server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: discovery: server-addr: localhost:8848 # Nacos 服務註冊中心地址 config: server-addr: localhost:8848 # Nacos 做爲配置中心地址 file-extension: yaml # 指定 yaml 格式的配置(相似去 Github 讀取文件) # ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
spring: profiles: active: dev # 表示開發環境
package com.java.springcloud.alibaba; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * @author Woo_home * @create 2020/5/20 16:27 */ @EnableDiscoveryClient @SpringBootApplication public class NacosConfigClientMain3377 { public static void main(String[] args){ SpringApplication.run(NacosConfigClientMain3377.class, args); } }
package com.java.springcloud.alibaba.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 Woo_home * @create 2020/5/20 16:27 */ @RestController @RefreshScope // 支持 Nacos 的動態刷新功能 public class ConfigController { @Value("${config.info}") private String configInfo; @GetMapping("/config/info") public String getConfigInfo() { return configInfo; } }
理論:
Nacos 中的 Data Id 的組成格式及與 SpringBoot 配置文件中的匹配規則
看下 Nacos 是怎麼介紹的,官網地址 https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
公式:
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
公式圖解:
實操:
在 Nacos 的該界面 點擊加號,添加配置
按照官網的說明配置一下
配置完後點擊發布按鈕
此時回到主頁面,已經將剛纔的配置添加進來了
點擊詳情選項發現內容和剛剛配置的是一致的
點擊編輯選項還能夠對剛剛的配置內容進行修改
啓動主啓動類的時候報錯了,說沒法解析這個 config.info
緣由是由於這個文件名不是 yaml 後綴,這裏有點小 bug(可是有些人的是沒問題的,多是 Nacos 及時修復了,聽說 1.2.0 之後已經解決了這個問題,我這裏使用的是 1.1.4 版本的)
刪除該配置文件從新新建一個配置文件,以下:
修改以後再次啓動主啓動類,能夠發現,控制檯打印了 dataid 的信息
而後咱們訪問 http://localhost:3377/config/info ,能夠發現,咱們在 Nacos 配置中心的內容已經拿過來了
OK ,如今已經能夠從 Nacos 配置中心將內容拿過來了,那麼想修改一下配置的內容怎麼辦呢?很是簡單,點擊編輯該配置文件修改配置內容就能夠了
這裏講 version = 1 改成 version = 1.0,而後保存發佈一下
再次刷新該頁面 http://localhost:3377/config/info
這樣就實現了一個動態刷新的功能
完整代碼已上傳至碼雲 完整代碼地址,感興趣的朋友能夠下載運行下