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

上一篇文章講述了一個服務(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-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>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

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

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.RC1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

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

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>


</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-eureka砰琢,代碼如下:

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

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

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</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-eureka,代碼如下:

<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-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

配置文件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/chapter7

四、參考資料

spring_cloud_config

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末重斑,一起剝皮案震驚了整個濱河市兵睛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窥浪,老刑警劉巖祖很,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異寒矿,居然都是意外死亡突琳,警方通過查閱死者的電腦和手機若债,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門符相,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蠢琳,你說我怎么就攤上這事啊终。” “怎么了傲须?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵蓝牲,是天一觀的道長。 經(jīng)常有香客問我泰讽,道長例衍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任已卸,我火速辦了婚禮佛玄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘累澡。我一直安慰自己梦抢,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布愧哟。 她就那樣靜靜地躺著奥吩,像睡著了一般哼蛆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霞赫,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天腮介,我揣著相機與錄音,去河邊找鬼端衰。 笑死萤厅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的靴迫。 我是一名探鬼主播惕味,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼玉锌!你這毒婦竟也來了名挥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤主守,失蹤者是張志新(化名)和其女友劉穎禀倔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體参淫,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡救湖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了涎才。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鞋既。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖耍铜,靈堂內(nèi)的尸體忽然破棺而出邑闺,到底是詐尸還是另有隱情,我是刑警寧澤棕兼,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布陡舅,位于F島的核電站,受9級特大地震影響伴挚,放射性物質(zhì)發(fā)生泄漏靶衍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一茎芋、第九天 我趴在偏房一處隱蔽的房頂上張望颅眶。 院中可真熱鬧,春花似錦败徊、人聲如沸帚呼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽煤杀。三九已至眷蜈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沈自,已是汗流浹背酌儒。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留枯途,地道東北人忌怎。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像酪夷,于是被迫代替她去往敵國和親榴啸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

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