nacos 配置不会动态刷新_Alibaba之Nacos详解
文章來源: https://blog.csdn.net/weixin_43322048/article/details/107745944
一、介紹
Nacos是阿里巴巴最新開源的項目,核心定位是“一個更易于幫助構建云原生應用的動態服務發現、配置和服務管理平臺”,項目地址:https://nacos.io/zh-cn/ Nacos核心提供兩個功能:服務注冊與發現,動態配置管理。
Nacos核心提供兩個功能:服務注冊與發現,動態配置管理。
1、服務注冊與發現
Nacos提供基于DNS和基于RPC的服務發現,即能被用來支持https/http的服務注冊與發現,也支持RPC如dubbo的服務注冊與發現。
與Dubbo使用的zookeeper相比而言,兩者差異還是比較大的,zookeeper是一種分布式的協調服務,它天生是作為分布式數據一致性場景下的解決方案,所以zookeeper是CP的,它犧牲了可用性來保證一致性,在極端情況下(master選舉期間)服務會對外停止,對于服務可用性要求比較高的系統是難以接受的。Nacos是一種去中心化的架構,屬于CAP理論里的AP架構,支持最終一致性,在分布式服務發現與注冊場景下具有很不錯的性能。目前dubbo官方也支持使用Nacos代替zookeeper。
2、動態配置服務
動態修改配置并實時生效對于服務端的同學而已并不陌生,這種服務能夠讓我們的服務擁有更多的靈活性,不需要重啟服務即可做到配置實時生效,非常適合于“配置優先”的服務開發。
3、選型方面
Nacos是2018年阿里開源的分布式配置中心和注冊中心,我們是有必要去了解去使用的現代化技術。能夠成為現在流行的技術組件,也有其很多優點,比如對于Apollo、Eureka、Consul等注冊中心相比,Nacos在性能上更優,輕量級的實現。Nacos整個生態圈是比較完善的,只是提供的配置及其他方面沒有那么完整。其實,對于一個企業來說,具體項目中使用根據實際場景去選型最優為基準,盡量折中去選。
服務注冊中心對比:服務配置中心對比:
二、Nacos安裝
準備環境:JDK1.8、Maven(其實這個可以省咧)、Linux/Mac
首先先下載好安裝包:nacos-server-1.1.4.tar.gz(通常使用1.1.4版本及以上)
然后,上傳到云服務器或其他服務器。
#解壓nacos安裝包tar?-zxvf?nacos-server-1.1.4.tar.gz
#由于沒有配置集群,非集群啟動,即單機片啟動
./startup.sh?-m?standalone
#通過該命令能夠確認nacos是否啟動成功
netstat?-antp??#查看所有端口,可以看到8848默認端口運行中
#瀏覽器訪問
http:ip:8848/nacos
12345678
安裝好了,我們進行下面的操作~
三、動態配置服務
1、首先,新建一個springboot項目,引入nacos依賴到項目中
????com.alibaba.cloud????spring-cloud-starter-alibaba-nacos-config1234
2、在resources目錄下新建bootstrap.yml文件
spring:??application:
????name:?nacos-config
??cloud:
????nacos:
??????config:
????????#配置中心地址
????????server-addr:?39.108.146.20:8848
????????#配置方式yml,目前僅支持properties/yaml
????????file-extension:?yml
????????#默認開啟自動刷新
????????refresh-enabled:?true
????????#不同組可以有相同的屬性
????????group:?dev
????????#可以根據配置環境不同相互隔離
#????????namespace:?pro
??main:
????allow-bean-definition-overriding:?true
123456789101112131415161718
3、nacos配置中心新建yaml格式配置文件
配置信息如圖:解釋一下:
1、dataId(唯一標識):p r e f i x ? {prefix}-prefi**x?{spring.profile.active}.${file-extension}
- prefix?默認為?spring.application.name?的值,也可以通過配置項?spring.cloud.nacos.config.prefix來配置。
- spring.profile.active?即為當前環境對應的 profile,詳情可以參考?Spring Boot文檔。?注意:當?spring.profile.active?為空時,對應的連接符?-?也將不存在,dataId 的拼接格式變成?${prefix}.${file-extension}
- file-exetension?為配置內容的數據格式,可以通過配置項?spring.cloud.nacos.config.file-extension?來配置。目前只支持?properties?和?yaml?類型。
2、group(配置組):在不同組中可以有相同的dataId
3、namespace(命名空間):可以隔離區分不同的環境配置文件,如:dev、test、pro、uat等環境
4、配置格式:暫時僅支持yaml、properties格式文件
5、配置內容:也就是你要配置的一些數據庫敏感信息,能夠實現動態獲取配置。
配置完成以后如圖:
通過客戶端動態獲取配置信息:
在springboot啟動類中加上@RefreshScope注解,實現動態刷新獲取配置,代碼如下:
package?com.ht.nacos;import?org.springframework.beans.factory.annotation.Value;
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
import?org.springframework.cloud.context.config.annotation.RefreshScope;
import?org.springframework.web.bind.annotation.GetMapping;
import?org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
@RefreshScope
public?class?NacosDemoApplication?{
????public?static?void?main(String[]?args)?{
????????SpringApplication.run(NacosDemoApplication.class,?args);
????}
????@Value("${test.name}")
????private?String?name;
????@Value("${test.age}")
????private?Integer?age;
????/**
?????*?測試配置
?????*?@return
?????*/
????@GetMapping("test")
????public?String?testConfig(){
????????return?name+"?:?"+age;
????}
}
12345678910111213141516171819202122232425262728293031323334
在這里通過@Value注解就能夠動態獲取到nacos配置信息:
我們啟動項目訪問一下,如下圖:
可以看到獲取成功了!然后我們在nacos中修改一下配置文件信息是否會動態刷新~
如下圖:
重新訪問一下,如圖:
從上面能夠看出來確實實現了動態刷新與訪問,到這里簡單的動態獲取配置信息就完成了。
四、服務注冊與發現
1、首先引入nacos注冊中心依賴:
?com.alibaba.cloudspring-cloud-starter-alibaba-nacos-discovery1234
2、完整的bootstrap.yml配置文件
spring:??application:
????name:?nacos-config
??cloud:
????nacos:
??????config:
????????#配置中心地址
????????server-addr:?39.108.146.20:8848
????????#配置方式yml,目前僅支持properties/yaml
????????file-extension:?yml
????????#默認開啟自動刷新
????????refresh-enabled:?true
????????#不同組可以有相同的屬性
????????group:?dev
????????#可以根據配置環境不同相互隔離
??????discovery:
????????server-addr:?39.108.146.20:8848
#????????username:?nacos
#????????password:?$2a$10$pxs77T/88cjff7zFKQlIheFQaVFDKBzQafrBgE.GnQ/EYKO0MMpgC
????????register-enabled:?true
????????enabled:?true
????????watch:
??????????enabled:?true
????????watch-delay:?30000
????????heart-beat-interval:?3000
????????heart-beat-timeout:?30000
????????group:?dev
????????service:?${spring.application.name}
????????weight:?1
????????secure:?false
??#????????namespace:?pro
??main:
????allow-bean-definition-overriding:?true
12345678910111213141516171819202122232425262728293031323334
在項目啟動類中加上@EnableDiscoveryClient注解,否則啟動會報錯!!!
配置完成以后,啟動項目,如下圖:此時服務列表多了一個服務,到這里服務的注冊與發現就簡單的實現了。
最后,附上完整代碼地址:
碼云:https://gitee.com/liao_hanlin/ProjectDirectory/tree/dev/nacos-demo
github:https://github.com/mbql/ProjectDirectory/tree/dev/nacos-demo
總結
以上是生活随笔為你收集整理的nacos 配置不会动态刷新_Alibaba之Nacos详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: animiz动画制作软件_实用动画制作软
- 下一篇: python集合的并集、交集_Pytho