摘要:通過本教程的前兩篇基礎(chǔ)教程使用實(shí)現(xiàn)服務(wù)注冊與發(fā)現(xiàn)基礎(chǔ)教程支持的幾種服務(wù)消費(fèi)方式我們已經(jīng)學(xué)會了,如何利用實(shí)現(xiàn)服務(wù)的注冊與發(fā)現(xiàn)。簡介除了實(shí)現(xiàn)了服務(wù)的注冊發(fā)現(xiàn)之外,還將配置中心功能整合在了一起。同時,值必須與上一階段中創(chuàng)建的配置匹配除了或者后綴。
通過本教程的前兩篇:
《Spring Cloud Alibaba基礎(chǔ)教程:使用Nacos實(shí)現(xiàn)服務(wù)注冊與發(fā)現(xiàn)》
《Spring Cloud Alibaba基礎(chǔ)教程:支持的幾種服務(wù)消費(fèi)方式(RestTemplate、WebClient、Feign)》
我們已經(jīng)學(xué)會了,如何利用Nacos實(shí)現(xiàn)服務(wù)的注冊與發(fā)現(xiàn)。同時,也介紹了在Spring Cloud中,我們可以使用的幾種不同編碼風(fēng)格的服務(wù)消費(fèi)方式。接下來,我們再來一起學(xué)習(xí)一下Nacos的另外一個重要能力:配置管理。
簡介Nacos除了實(shí)現(xiàn)了服務(wù)的注冊發(fā)現(xiàn)之外,還將配置中心功能整合在了一起。通過Nacos的配置管理功能,我們可以將整個架構(gòu)體系內(nèi)的所有配置都集中在Nacos中存儲。這樣做的好處,在以往的教程中介紹Spring Cloud Config時也有提到,主要有以下幾點(diǎn):
分離的多環(huán)境配置,可以更靈活的管理權(quán)限,安全性更高
應(yīng)用程序的打包更為純粹,以實(shí)現(xiàn)一次打包,多處運(yùn)行的特點(diǎn)(《云原聲應(yīng)用的12要素》之一)
Nacos的配置管理模型與淘寶開源的配置中心Diamond類似,基礎(chǔ)層面都通過DataId和Group來定位配置內(nèi)容,除此之外還增加了很多其他的管理功能。
快速入門下面我們通過一個簡單的例子來介紹如何在Nacos中創(chuàng)建配置內(nèi)容以及如何在Spring Cloud應(yīng)用中加載Nacos的配置信息。
創(chuàng)建配置第一步:進(jìn)入Nacos的控制頁面,在配置列表功能頁面中,點(diǎn)擊右上角的“+”按鈕,進(jìn)入“新建配置”頁面,如下圖填寫內(nèi)容:
其中:
Data ID:填入alibaba-nacos-config-client.properties
Group:不修改,使用默認(rèn)值DEFAULT_GROUP
配置格式:選擇Properties
配置內(nèi)容:應(yīng)用要加載的配置內(nèi)容,這里僅作為示例,做簡單配置,比如:didispace.title=spring-cloud-alibaba-learning
創(chuàng)建應(yīng)用第一步:創(chuàng)建一個Spring Boot應(yīng)用,可以命名為:alibaba-nacos-config-client。
第二步:編輯pom.xml,加入必要的依賴配置,比如:
org.springframework.boot spring-boot-starter-parent 2.0.5.RELEASE org.springframework.cloud spring-cloud-dependencies Finchley.SR1 pom import org.springframework.cloud spring-cloud-alibaba-dependencies 0.2.1.RELEASE pom import org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-alibaba-nacos-config org.projectlombok lombok 1.18.2 true
上述內(nèi)容主要三部分:
parent:定義spring boot的版本
dependencyManagement:spring cloud的版本以及spring cloud alibaba的版本,由于spring cloud alibaba還未納入spring cloud的主版本管理中,所以需要自己加入
dependencies:當(dāng)前應(yīng)用要使用的依賴內(nèi)容。這里主要新加入了Nacos的配置客戶端模塊:spring-cloud-starter-alibaba-nacos-config。由于在dependencyManagement中已經(jīng)引入了版本,所以這里就不用指定具體版本了。
可以看到,這個例子中并沒有加入nacos的服務(wù)發(fā)現(xiàn)模塊,所以這兩個內(nèi)容是完全可以獨(dú)立使用的
第三步:創(chuàng)建應(yīng)用主類,并實(shí)現(xiàn)一個HTTP接口:
@SpringBootApplication public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } @Slf4j @RestController @RefreshScope static class TestController { @Value("${didispace.title:}") private String title; @GetMapping("/test") public String hello() { return title; } } }
內(nèi)容非常簡單,@SpringBootApplication定義是個Spring Boot應(yīng)用;還定義了一個Controller,其中通過@Value注解,注入了key為didispace.title的配置(默認(rèn)為空字符串),這個配置會通過/test接口返回,后續(xù)我們會通過這個接口來驗證Nacos中配置的加載。另外,這里還有一個比較重要的注解@RefreshScope,主要用來讓這個類下的配置內(nèi)容支持動態(tài)刷新,也就是當(dāng)我們的應(yīng)用啟動之后,修改了Nacos中的配置內(nèi)容之后,這里也會馬上生效。
第四步:創(chuàng)建配置文件bootstrap.properties,并配置服務(wù)名稱和Nacos地址
spring.application.name=alibaba-nacos-config-client server.port=8001 spring.cloud.nacos.config.server-addr=127.0.0.1:8848
注意:這里必須使用bootstrap.properties。同時,spring.application.name值必須與上一階段Nacos中創(chuàng)建的配置Data Id匹配(除了.properties或者.yaml后綴)。
第五步:啟動上面創(chuàng)建的應(yīng)用。
2019-01-27 18:29:43.497 INFO 93597 --- [ main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: "alibaba-nacos-config-client.properties", group: "DEFAULT_GROUP" 2019-01-27 18:29:43.498 INFO 93597 --- [ main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name="NACOS", propertySources=[NacosPropertySource {name="alibaba-nacos-config-client.properties"}]}
在啟動的時候,我們可以看到類似上面的日志信息,這里會輸出應(yīng)用程序要從Nacos中獲取配置的dataId和group。如果在啟動之后,發(fā)現(xiàn)配置信息沒有獲取到的時候,可以先從這里著手,看看配置加載的目標(biāo)是否正確。
第六步:驗證配置獲取和驗證動態(tài)刷新
用curl或者postman等工具,訪問接口: localhost:8001/test,一切正常的話,將返回Nacos中配置的spring-cloud-alibaba-learning。然后,再通過Nacos頁面,修改這個內(nèi)容,點(diǎn)擊發(fā)布之后,再訪問接口,可以看到返回結(jié)果變了。
同時,在應(yīng)用的客戶端,我們還能看到如下日志:
2019-01-27 18:39:14.162 INFO 93597 --- [-127.0.0.1_8848] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [didispace.title]
在Nacos中修改了Key,在用到這個配置的應(yīng)用中,也自動刷新了這個配置信息。
參考資料Nacos官方文檔
Nacos源碼分析
代碼示例本文示例讀者可以通過查看下面?zhèn)}庫的中的alibaba-nacos-config-client項目:
Github:https://github.com/dyc87112/SpringCloud-Learning/
Gitee:https://gitee.com/didispace/SpringCloud-Learning/
如果您對這些感興趣,歡迎star、follow、收藏、轉(zhuǎn)發(fā)給予支持!
以下專題教程也許您會有興趣Spring Boot基礎(chǔ)教程
Spring Cloud基礎(chǔ)教程
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/11978.html
摘要:之前開放過一臺公益給大家,以方便大家在閱讀我博客中教程時候做實(shí)驗。由于目前在連載,所以對應(yīng)的也部署了一臺,并且也開放出來,給大家學(xué)習(xí)測試之用。 之前開放過一臺公益Eureka Server給大家,以方便大家在閱讀我博客中教程時候做實(shí)驗。由于目前在連載Spring Cloud Alibaba,所以對應(yīng)的也部署了一臺Nacos,并且也開放出來,給大家學(xué)習(xí)測試之用。 Nacos控制臺 ...
摘要:在搭建集群之前,我們需要先修改的數(shù)據(jù)持久化配置為存儲。所以,如果啟動多個默認(rèn)配置下的節(jié)點(diǎn),數(shù)據(jù)存儲是存在一致性問題的。為了解決這個問題,采用了集中式存儲的方式來支持集群化部署,目前只要支持的存儲。 前情回顧: 《Spring Cloud Alibaba基礎(chǔ)教程:使用Nacos實(shí)現(xiàn)服務(wù)注冊與發(fā)現(xiàn)》 《Spring Cloud Alibaba基礎(chǔ)教程:支持的幾種服務(wù)消費(fèi)方式》 《Spri...
摘要:第二步在應(yīng)用的配置文件中,增加環(huán)境配置第三步啟動應(yīng)用,我們可以看到日志中打印了,加載的配置文件使用實(shí)現(xiàn)在中是用來對做集合管理的重要概念。深入思考上面我們分別利用配置管理功能中的幾個不同緯度來實(shí)現(xiàn)多環(huán)境的配置管理。 前情回顧: 《Spring Cloud Alibaba基礎(chǔ)教程:使用Nacos實(shí)現(xiàn)服務(wù)注冊與發(fā)現(xiàn)》 《Spring Cloud Alibaba基礎(chǔ)教程:支持的幾種服務(wù)消費(fèi)方...
摘要:通過本文,我們將完成生產(chǎn)環(huán)境的搭建。第二步修改文件,增加支持?jǐn)?shù)據(jù)源配置,添加目前只支持?jǐn)?shù)據(jù)源的用戶名和密碼。另外,的集群需要個或個以上的節(jié)點(diǎn),并且確保這三個節(jié)點(diǎn)之間是可以互相訪問的。也可以故意的關(guān)閉某個實(shí)例,來驗證集群是否還能正常服務(wù)。 前情回顧: 《Spring Cloud Alibaba基礎(chǔ)教程:使用Nacos實(shí)現(xiàn)服務(wù)注冊與發(fā)現(xiàn)》 《Spring Cloud Alibaba基礎(chǔ)教...
摘要:通過本文,我們將完成生產(chǎn)環(huán)境的搭建。第二步修改文件,增加支持?jǐn)?shù)據(jù)源配置,添加目前只支持?jǐn)?shù)據(jù)源的用戶名和密碼。另外,的集群需要個或個以上的節(jié)點(diǎn),并且確保這三個節(jié)點(diǎn)之間是可以互相訪問的。也可以故意的關(guān)閉某個實(shí)例,來驗證集群是否還能正常服務(wù)。 前情回顧: 《Spring Cloud Alibaba基礎(chǔ)教程:使用Nacos實(shí)現(xiàn)服務(wù)注冊與發(fā)現(xiàn)》 《Spring Cloud Alibaba基礎(chǔ)教...
閱讀 947·2021-09-26 09:55
閱讀 3191·2021-09-22 15:36
閱讀 2981·2021-09-04 16:48
閱讀 3142·2021-09-01 11:41
閱讀 2591·2019-08-30 13:49
閱讀 1490·2019-08-29 18:46
閱讀 3545·2019-08-29 17:28
閱讀 3425·2019-08-29 14:11