Spring Cloud Alibaba nacos 配置中心使用

Spring Cloud Alibaba 使用nacos 注冊(cè)中心

背景

在第一篇nacos介紹的時(shí)候提到nacos 是注冊(cè)中心又是配置中心懈费,上一篇我們介紹了Spring Cloud Alibaba 使用nacos 注冊(cè)中心的使用這一篇我們講述 配置中心的使用蹈丸。

nacos配置中心

之前的講述了 配置文件的配置。這次我們只需要在之前的代碼中 添加maven nacos配置中心的依賴
這個(gè)是配置到spring cloud alibaba 教程總pom版本控制 這個(gè)pom文件中。這樣還是利用maven 自身的jar包依賴孝凌。discovery-server难礼、cloud-discovery-client-common倆個(gè)模塊自動(dòng)引入nacos配置中心的依賴

       <!-- 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配置中心

file

創(chuàng)建 cloud-discovery-server-dev.yaml
配置
nacos.yaml.age= 30


file

啟動(dòng)服務(wù)
訪問 curl http://localhost:9012/server/hello?name=tom

日志打印


file

file

說明nacos配置中心已經(jīng)生效
然后我們修改cloud-discovery-server-dev.yaml 配置文件age 為20參數(shù) 重新發(fā)布一下


file

會(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ā)送改變


file

以上就是nacos的配置中心的配置陷遮。

然后我們講解一下 nacos配置的匹配規(guī)則

dataID

在 Nacos Config Starter 中,
dataId (也就是上面cloud-discovery-server-dev.yaml)的拼接格式如下

{prefix} -{spring.profiles.active} . ${file-extension}
prefix 默認(rèn)為 spring.application.name 的值垦江,也可以通過配置項(xiàng) spring.cloud.nacos.config.prefix來配置帽馋。

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ù)格式梗逮,可以通過配置項(xiàng) spring.cloud.nacos.config.file-extension來配置项秉。 目前只支持 properties 類型绣溜。

group

group 默認(rèn)為 DEFAULT_GROUP慷彤,可以通過 spring.cloud.nacos.config.group 配置。

自動(dòng)注入

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)容。

動(dòng)態(tài)刷新

Nacos Config Starter 默認(rèn)為所有獲取數(shù)據(jù)成功的 Nacos 的配置項(xiàng)添加了監(jiān)聽功能哗蜈,在監(jiān)聽到服務(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ī)范距潘。推薦給類添加 @RefreshScope 或 @ConfigurationProperties 注解炼列,

以上就是nacos配置中心的全部?jī)?nèi)容。

補(bǔ)充 命名空間

不管是 nacos的注冊(cè)中心 還是nacos的配置中心 都有一個(gè)namespace屬性音比。這個(gè)屬性 是針對(duì)我們nacos 控制臺(tái)命名空間俭尖。

特殊說明一下,命名空間的概念 因?yàn)榕渲弥行暮妥?cè)中心是通用的概念洞翩。所以放在里配置中心這里講解稽犁。

我們?cè)诳刂婆_(tái)創(chuàng)建lms的一個(gè)命名空間


file

會(huì)有命名空間ID e071c3ab-b280-4ae7-a081-044fff5613ad
我們把這個(gè)ID 放到配置文件里面 對(duì)應(yīng)配置修改為

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的命名空間上了骚亿。


file

反思

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ì)滿足了我們大部分的場(chǎng)景的需要和支持

在加上命名空間的概念。我們有多了一種情況的變化 與選擇娇未。不過這樣多了墨缘,當(dāng)我們集群環(huán)境足夠大的時(shí)候,反而會(huì)讓很多同學(xué)找不到頭緒零抬。這就需要我們提前約定好镊讼。規(guī)則的使用

如何喜歡可以關(guān)注分享本公眾號(hào)。


file

版權(quán)聲明:本文為博主原創(chuàng)文章平夜,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議蝶棋,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。轉(zhuǎn)載請(qǐng)附帶公眾號(hào)二維碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末忽妒,一起剝皮案震驚了整個(gè)濱河市玩裙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌段直,老刑警劉巖吃溅,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鸯檬,居然都是意外死亡决侈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門喧务,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赖歌,“玉大人,你說我怎么就攤上這事功茴÷耄” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵痊土,是天一觀的道長(zhǎng)肄扎。 經(jīng)常有香客問我,道長(zhǎng)赁酝,這世上最難降的妖魔是什么犯祠? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮酌呆,結(jié)果婚禮上衡载,老公的妹妹穿的比我還像新娘。我一直安慰自己隙袁,他們只是感情好痰娱,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布弃榨。 她就那樣靜靜地躺著,像睡著了一般梨睁。 火紅的嫁衣襯著肌膚如雪鲸睛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天坡贺,我揣著相機(jī)與錄音官辈,去河邊找鬼。 笑死遍坟,一個(gè)胖子當(dāng)著我的面吹牛拳亿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播愿伴,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼肺魁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了隔节?” 一聲冷哼從身側(cè)響起鹅经,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎官帘,沒想到半個(gè)月后瞬雹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刽虹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呢诬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涌哲。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖尚镰,靈堂內(nèi)的尸體忽然破棺而出阀圾,到底是詐尸還是另有隱情,我是刑警寧澤狗唉,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布初烘,位于F島的核電站,受9級(jí)特大地震影響分俯,放射性物質(zhì)發(fā)生泄漏肾筐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一缸剪、第九天 我趴在偏房一處隱蔽的房頂上張望吗铐。 院中可真熱鬧,春花似錦杏节、人聲如沸唬渗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镊逝。三九已至壮啊,卻和暖如春巡扇,著一層夾襖步出監(jiān)牢的瞬間灭衷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工蒂秘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留减江,地道東北人染突。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像辈灼,于是被迫代替她去往敵國(guó)和親份企。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容