您好,登錄后才能下訂單哦!
小編給大家分享一下Spring Cloud Alibaba怎樣使用nacos注冊(cè)中心,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
在第一篇nacos介紹的時(shí)候提到nacos 是注冊(cè)中心又是配置中心, 上一篇我們介紹了Spring Cloud Alibaba 使用nacos 注冊(cè)中心的使用這一篇我們講述 配置中心的使用。
之前的講述了 配置文件的配置。這次我們只需要在之前的代碼中 添加maven nacos配置中心的依賴(lài) 這個(gè)是配置到spring cloud alibaba 教程總pom版本控制 這個(gè)pom文件中。這樣還是利用maven 自身的jar包依賴(lài)。discovery-server、cloud-discovery-client-common倆個(gè)模塊自動(dòng)引入nacos配置中心的依賴(lài)
<!-- nacos config --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
修改對(duì)應(yīng)yml文件添加
server端yaml配置文件
spring: cloud: config: server-addr: 47.99.209.72:8848 file-extension: yaml
最后分別呈現(xiàn)結(jié)果
server: port: 9012 spring: profiles: active: dev application: name: cloud-discovery-server cloud: nacos: config: server-addr: 47.99.209.72:8848 #指定文件后綴 file-extension: yaml discovery: server-addr: 47.99.209.72:8848
修改http接口
package com.xian.cloud.controller; import lombok.extern.slf4j.Slf4j; 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.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * @Author: xlr * @Date: Created in 2:57 PM 2019/10/27 */ @RestController @RequestMapping("server") @Slf4j # 提供分布式的配置動(dòng)態(tài)刷新 @RefreshScope public class DiscoverCotroller { @Value( "${nacos.yaml.age}" ) private String age; /** * 對(duì)外提供的服務(wù) HTTP接口 * @param name * @return */ @GetMapping("/hello") public String hello(@RequestParam String name) { log.info("invoked name = " + name+ " age = " + age); return "hello " + name + " age = " + age; } }
然后在配置中心配置創(chuàng)建配置文件 點(diǎn)擊登錄nacos配置中心
創(chuàng)建 cloud-discovery-server-dev.yaml 配置 nacos.yaml.age= 30
啟動(dòng)服務(wù) 訪問(wèn) curl http://localhost:9012/server/hello?name=tom
日志打印
說(shuō)明nacos配置中心已經(jīng)生效 然后我們修改cloud-discovery-server-dev.yaml 配置文件age 為20參數(shù) 重新發(fā)布一下
會(huì)看到后臺(tái)日志打印
2019-10-27 19:53:08.884 INFO 44618 --- [.99.209.72_8848] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$87d25f89] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2019-10-27 19:53:09.091 INFO 44618 --- [.99.209.72_8848] c.a.c.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'cloud-discovery-server-dev.yaml', group: 'DEFAULT_GROUP' 2019-10-27 19:53:09.092 INFO 44618 --- [.99.209.72_8848] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='cloud-discovery-server-dev.yaml'}, NacosPropertySource {name='cloud-discovery-server.yaml'}]} 2019-10-27 19:53:09.093 INFO 44618 --- [.99.209.72_8848] o.s.boot.SpringApplication : The following profiles are active: dev 2019-10-27 19:53:09.103 INFO 44618 --- [.99.209.72_8848] o.s.boot.SpringApplication : Started application in 0.277 seconds (JVM running for 883.2) 2019-10-27 19:53:09.119 INFO 44618 --- [.99.209.72_8848] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [nacos.yaml.age]
不重啟服務(wù),再次請(qǐng)求.age 已發(fā)送改變
以上就是nacos的配置中心的配置。
在 Nacos Config Starter 中, dataId (也就是上面cloud-discovery-server-dev.yaml)的拼接格式如下
${prefix} - ${spring.profiles.active} . ${file-extension} prefix 默認(rèn)為 spring.application.name 的值,也可以通過(guò)配置項(xiàng) spring.cloud.nacos.config.prefix來(lái)配置。
spring.profiles.active 即為當(dāng)前環(huán)境對(duì)應(yīng)的 profile,詳情可以參考 Spring Boot文檔
注意,當(dāng) activeprofile 為空時(shí),對(duì)應(yīng)的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}
file-extension 為配置內(nèi)容的數(shù)據(jù)格式,可以通過(guò)配置項(xiàng) spring.cloud.nacos.config.file-extension來(lái)配置。 目前只支持 properties 類(lèi)型。
group 默認(rèn)為 DEFAULT_GROUP,可以通過(guò) spring.cloud.nacos.config.group 配置。
Nacos Config Starter 實(shí)現(xiàn)了 org.springframework.cloud.bootstrap.config.PropertySourceLocator接口,并將優(yōu)先級(jí)設(shè)置成了最高。
在 Spring Cloud 應(yīng)用啟動(dòng)階段,會(huì)主動(dòng)從 Nacos Server 端獲取對(duì)應(yīng)的數(shù)據(jù),并將獲取到的數(shù)據(jù)轉(zhuǎn)換成 PropertySource 且注入到 Environment 的 PropertySources 屬性中,所以使用 @Value 注解也能直接獲取 Nacos Server 端配置的內(nèi)容。
Nacos Config Starter 默認(rèn)為所有獲取數(shù)據(jù)成功的 Nacos 的配置項(xiàng)添加了監(jiān)聽(tīng)功能,在監(jiān)聽(tīng)到服務(wù)端配置發(fā)生變化時(shí)會(huì)實(shí)時(shí)觸發(fā) org.springframework.cloud.context.refresh.ContextRefresher 的 refresh 方法 。
如果需要對(duì) Bean 進(jìn)行動(dòng)態(tài)刷新,請(qǐng)參照 Spring 和 Spring Cloud 規(guī)范。推薦給類(lèi)添加 @RefreshScope 或 @ConfigurationProperties 注解,
以上就是nacos配置中心的全部?jī)?nèi)容。
不管是 nacos的注冊(cè)中心 還是nacos的配置中心 都有一個(gè)namespace屬性。這個(gè)屬性 是針對(duì)我們nacos 控制臺(tái)命名空間。
我們?cè)诳刂婆_(tái)創(chuàng)建lms的一個(gè)命名空間
會(huì)有命名空間ID e071c3ab-b280-4ae7-a081-044fff5613ad 我們把這個(gè)ID 放到配置文件里面 對(duì)應(yīng)namespace屬性配置修改,如果不修改默認(rèn)public空間
server: port: 9013 spring: profiles: active: dev application: name: cloud-discovery-server cloud: nacos: config: server-addr: 47.99.209.72:8848 file-extension: yaml namespace: e071c3ab-b280-4ae7-a081-044fff5613ad discovery: server-addr: 47.99.209.72:8848 namespace: e071c3ab-b280-4ae7-a081-044fff5613ad
重新啟動(dòng)會(huì)發(fā)現(xiàn),服務(wù)注冊(cè)到了 lms的命名空間上了。
dataID、group 組合使用。${prefix} - ${spring.profiles.active} . ${file-extension} 。其中active參數(shù)的變化可以幫我們做到環(huán)境的隔離。group的變化。又可以幫我們做到項(xiàng)目組、版本的區(qū)分。這樣配置就不會(huì)亂 配合倆種參數(shù)的變化達(dá)到我們想要的動(dòng)態(tài)變化區(qū)分。其實(shí)這塊的設(shè)計(jì)滿(mǎn)足了我們大部分的場(chǎng)景的需要和支持
在加上命名空間的概念。我們有多了一種情況的變化 與選擇。不過(guò)這樣多了,當(dāng)我們集群環(huán)境足夠大的時(shí)候,反而會(huì)讓很多同學(xué)找不到頭緒。這就需要我們提前約定好。
以上是“Spring Cloud Alibaba怎樣使用nacos注冊(cè)中心”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。