springcloud-配置中心config

為什么要使用配置中心

  • 集中管理配置糊余。一個(gè)使用微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)可能會(huì)包含成百上千個(gè)微服務(wù)霍殴,因此集中管理配置是非常有必要的;
  • 不同環(huán)境帝簇,不同配置徘郭。例如,數(shù)據(jù)源配置在不同的環(huán)境(開發(fā)丧肴、測(cè)試残揉、預(yù)發(fā)布、生產(chǎn)等)中是不同的芋浮;
  • 運(yùn)行期間可動(dòng)態(tài)調(diào)整抱环。例如,我們可根據(jù)各個(gè)微服務(wù)的負(fù)載情況纸巷,動(dòng)態(tài)調(diào)整某自定義的配置文件參數(shù)
  • 配置修改后可自動(dòng)更新镇草。如配置內(nèi)容發(fā)生變化,微服務(wù)能夠自動(dòng)更新配置瘤旨。

Spring Cloud Config簡(jiǎn)介

Spring Cloud Config為分布式系統(tǒng)外部化配置提供了服務(wù)器端和客戶端的支持梯啤,它包括Config Server和Config Client兩部分。由于Config Server和Config Client都實(shí)現(xiàn)了對(duì)Spring Environment和PropertySource抽象的映射裆站,因此条辟,Spring Cloud Config非常適合Spring應(yīng)用程序黔夭,當(dāng)然也可與任何其他語(yǔ)言編寫的應(yīng)用程序配合使用宏胯。

Config Server是一個(gè)可橫向擴(kuò)展羽嫡、集中式的配置服務(wù)器,它用于集中管理應(yīng)用程序各個(gè)環(huán)境下的配置肩袍,默認(rèn)使用Git存儲(chǔ)配置內(nèi)容(也可使用Subversion杭棵、MySQL、本地文件系統(tǒng)或Vault存儲(chǔ)配置氛赐,本博客以Git為例進(jìn)行講解)魂爪,因此可以很方便地實(shí)現(xiàn)對(duì)配置的版本控制與內(nèi)容審計(jì)。

創(chuàng)建spring-cloud-config模塊:

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>spring-cloud-wsl</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.example</groupId>
    <artifactId>spring-cloud-config</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-cloud-config</name>
    <description>Demo project for Spring Cloud Config</description>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- spring cloud config 服務(wù)端包 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
</project>

配置文件application.yml

server:
  port: 8885
spring:
  application:
    name: config
  cloud:
    config:
      server:
        git:
          uri: 你的github地址 .git結(jié)尾的
          username: 你的賬號(hào)
          password: 你的密碼
         # default-label: master #配置文件分支
         # search-paths: config  #配置文件所在根目錄
eureka:
  client:
    service-url:
      #注冊(cè)中心地址
      defaultZone: http://localhost:8761/eureka/
  instance:
    #將ip注冊(cè)到eureka上
    prefer-ip-address: true

啟動(dòng)類添加注解:

@EnableConfigServer
@SpringBootApplication
public class ConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigApplication.class, args);
    }
}

spring-cloud-config模塊到此創(chuàng)建完畢


我是在碼云上存放的配置文件艰管,因?yàn)閲?guó)內(nèi)碼云會(huì)比github的訪問(wèn)速度要快一些

登錄碼云(沒(méi)有賬號(hào)的可以免費(fèi)注冊(cè)一個(gè))滓侍,首頁(yè)的右上角創(chuàng)建倉(cāng)庫(kù):

填上倉(cāng)庫(kù)名選擇公開:

然后在該倉(cāng)庫(kù)下創(chuàng)建yml文件,具體的git使用請(qǐng)自行百度牲芋,此處不進(jìn)行過(guò)多說(shuō)明

我是提交到倉(cāng)庫(kù)了兩個(gè)provider的yml文件和一個(gè)consumer-feign的yml文件撩笆,我們用provider舉例:

provider-dev1.yml:

server:
  port: 8880
#eureka客戶端連接配置
eureka:
  client:
    service-url:
      #注冊(cè)中心地址
      defaultZone: http://localhost:8761/eureka/
  instance:
    #將ip注冊(cè)到eureka上
    prefer-ip-address: true

provider-dev2.yml:

server:
  port: 8881
#eureka客戶端連接配置
eureka:
  client:
    service-url:
      #注冊(cè)中心地址
      defaultZone: http://localhost:8761/eureka/
  instance:
    #將ip注冊(cè)到eureka上
    prefer-ip-address: true

回到項(xiàng)目中,在spring-cloud-provider模塊中創(chuàng)建bootstrap.yml配置文件:

spring:
  application:
    name: provider
  cloud:
    config:
      discovery:
        enabled: true
        serviceId: config
      profile: dev1
      # 指定分枝版本缸浦,默認(rèn)為master
      label: master

注:這里的profile: dev1 對(duì)應(yīng)的是碼云上的配置文件名字的后綴夕冲,
具體名稱和配置的對(duì)應(yīng)關(guān)系如下:
/{name}-{profiles}.properties
/{name}-{profiles}.yml || /{name}-{profiles}.yaml
/{label}/{name}-{profiles}.properties
/{label}/{name}-{profiles}.json
/{name}/{profiles}/{label:.*}
/{name}-{profiles}.json
/{label}/{name}-{profiles}.yml || /{label}/{name}-{profiles}.yaml
/{name}/{profiles:.*[^-].*}
/{name}/{profile}/{label}/**
/{name}/{profile}/{label}/**
/{name}/{profile}/**

把a(bǔ)pplication.yml文件隨便命名個(gè)別的名:


然后pom里添加config相關(guān)依賴:

<!-- Config-Client 依賴 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>

啟動(dòng)注冊(cè)中心、配置中心裂逐、provider歹鱼,打開瀏覽器輸入http://localhost:8880/test/wangshilin

修改spring-cloud-provider模塊的配置文件bootstrap.yml中profile屬性改為dev2

重啟spring-cloud-provider:

瀏覽器輸入http://localhost:8881/test/wangshilin


后續(xù)會(huì)抽時(shí)間更新一下配置加密方面的內(nèi)容,敬請(qǐng)期待

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卜高,一起剝皮案震驚了整個(gè)濱河市弥姻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掺涛,老刑警劉巖蚁阳,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鸽照,居然都是意外死亡螺捐,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門矮燎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)定血,“玉大人,你說(shuō)我怎么就攤上這事诞外±焦担” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵峡谊,是天一觀的道長(zhǎng)茫虽。 經(jīng)常有香客問(wèn)我刊苍,道長(zhǎng),這世上最難降的妖魔是什么濒析? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任正什,我火速辦了婚禮,結(jié)果婚禮上号杏,老公的妹妹穿的比我還像新娘婴氮。我一直安慰自己,他們只是感情好盾致,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布主经。 她就那樣靜靜地躺著,像睡著了一般庭惜。 火紅的嫁衣襯著肌膚如雪罩驻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天护赊,我揣著相機(jī)與錄音惠遏,去河邊找鬼。 笑死百揭,一個(gè)胖子當(dāng)著我的面吹牛爽哎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播器一,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼课锌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了祈秕?” 一聲冷哼從身側(cè)響起渺贤,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎请毛,沒(méi)想到半個(gè)月后志鞍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡方仿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年固棚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仙蚜。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡此洲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出委粉,到底是詐尸還是另有隱情呜师,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布贾节,位于F島的核電站汁汗,受9級(jí)特大地震影響衷畦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜知牌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一祈争、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧送爸,春花似錦铛嘱、人聲如沸暖释。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)球匕。三九已至纹磺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間亮曹,已是汗流浹背橄杨。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留照卦,地道東北人式矫。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像役耕,于是被迫代替她去往敵國(guó)和親采转。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353