史上最簡單的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)

轉(zhuǎn)載請標(biāo)明出處:
http://blog.csdn.net/forezp/article/details/81041045
本文出自方志朋的博客

上一篇文章講述了一個服務(wù)如何從配置中心讀取文件耿戚,配置中心如何從遠(yuǎn)程git讀取配置文件膜蛔,當(dāng)服務(wù)實例很多時皂股,都從配置中心讀取文件命黔,這時可以考慮將配置中心做成一個微服務(wù),將其集群化蘑辑,從而達(dá)到高可用坠宴,架構(gòu)圖如下:

Azure (3).png

一啄踊、準(zhǔn)備工作

繼續(xù)使用上一篇文章的工程,創(chuàng)建一個eureka-server工程址晕,用作服務(wù)注冊中心顿锰。

在其pom.xml文件引入Eureka的起步依賴spring-cloud-starter-netflix- eureka-server启搂,代碼如下:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.forezp</groupId>
    <artifactId>config-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>config-server</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.forezp</groupId>
        <artifactId>sc-f-chapter7</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>



</project>


在配置文件application.yml上,指定服務(wù)端口為8889匙隔,加上作為服務(wù)注冊中心的基本配置,代碼如下:

server:
  port: 8889

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

入口類:

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}


二捍掺、改造config-server

在其pom.xml文件加上EurekaClient的起步依賴spring-cloud-starter-netflix-eureka-client再膳,代碼如下:

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

    </dependencies>

配置文件application.yml,指定服務(wù)注冊地址為http://localhost:8889/eureka/不瓶,其他配置同上一篇文章灾杰,完整的配置如下:

spring.application.name=config-server
server.port=8888

spring.cloud.config.server.git.uri=https://github.com/forezp/SpringcloudConfig/
spring.cloud.config.server.git.searchPaths=respo
spring.cloud.config.label=master
spring.cloud.config.server.git.username= your username
spring.cloud.config.server.git.password= your password
eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/

最后需要在程序的啟動類Application加上@EnableEureka的注解吭露。

三、改造config-client

將其注冊微到服務(wù)注冊中心泥兰,作為Eureka客戶端题禀,需要pom文件加上起步依賴spring-cloud-starter-netflix-eureka-client,代碼如下:

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

配置文件bootstrap.properties削彬,注意是bootstrap秀仲。加上服務(wù)注冊地址為http://localhost:8889/eureka/

spring.application.name=config-client
spring.cloud.config.label=master
spring.cloud.config.profile=dev
#spring.cloud.config.uri= http://localhost:8888/

eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
server.port=8881


  • spring.cloud.config.discovery.enabled 是從配置中心讀取文件。
  • spring.cloud.config.discovery.serviceId 配置中心的servieId雁刷,即服務(wù)名沛励。

這時發(fā)現(xiàn)责语,在讀取配置文件不再寫ip地址坤候,而是服務(wù)名企蹭,這時如果配置服務(wù)部署多份,通過負(fù)載均衡,從而高可用吹害。

依次啟動eureka-servr,config-server,config-client
訪問網(wǎng)址:http://localhost:8889/

Paste_Image.png

訪問http://localhost:8881/hi它呀,瀏覽器顯示:

foo version 3

本文源碼下載:
https://github.com/forezp/SpringCloudLearning/tree/master/sc-f-chapter7

四、參考資料

spring_cloud_config

優(yōu)秀文章推薦:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末下隧,一起剝皮案震驚了整個濱河市淆院,隨后出現(xiàn)的幾起案子句惯,更是在濱河造成了極大的恐慌,老刑警劉巖拷淘,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件指孤,死亡現(xiàn)場離奇詭異,居然都是意外死亡结洼,警方通過查閱死者的電腦和手機叉跛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門昧互,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伟桅,“玉大人楣铁,你說我怎么就攤上這事「峭螅” “怎么了浓镜?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵膛薛,是天一觀的道長。 經(jīng)常有香客問我雅任,道長咨跌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任禽车,我火速辦了婚禮刊殉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钦勘。我一直安慰自己亚亲,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布肛响。 她就那樣靜靜地躺著,像睡著了一般惜索。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上猎物,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機與錄音淘讥,去河邊找鬼堤如。 笑死,一個胖子當(dāng)著我的面吹牛搀罢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抵赢,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼瓣俯,長吁一口氣:“原來是場噩夢啊……” “哼兵怯!你這毒婦竟也來了腔剂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤袜漩,失蹤者是張志新(化名)和其女友劉穎湾碎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體座掘,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡柔滔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年睛廊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咆霜。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖裕便,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挂疆,我是刑警寧澤下翎,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站胆萧,受9級特大地震影響俐东,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜虏辫,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一砌庄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧娄昆,春花似錦、人聲如沸哺眯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寝杖。三九已至互纯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辣往。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工站削, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人许起。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓园细,卻偏偏與公主長得像,于是被迫代替她去往敵國和親猛频。 傳聞我的和親對象是個殘疾皇子蛛勉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,066評論 2 355

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