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

上一篇文章講述了一個服務如何從配置中心讀取文件,配置中心如何從遠程git讀取配置文件,當服務實例不少時,都從配置中心讀取文件,這時能夠考慮將配置中心作成一個微服務,將其集羣化,從而達到高可用,架構圖以下:git

1、改造config-server

在現有項目基礎上,改造。github

在其pom.xml文件加上EurekaClient的起步依賴spring-cloud-starter-eureka,代碼以下:web

<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>

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

最後須要在啓動類Application加上@EnableConfigServer,@EnableEurekaClient的註解。spring

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

2、改造config-client

將其註冊微到服務註冊中心,做爲Eureka客戶端,須要pom文件加上起步依賴spring-cloud-starter-netflix-eureka-server,代碼以下:bootstrap

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

 

配置文件bootstrap.properties,注意是bootstrap。註解一行,不使用ip註冊到服務中,使用服務名"config-server"。瀏覽器

server.port=8881 spring.application.name=config-client #開啓配置服務發現,從配置中心讀取文件 spring.cloud.config.discovery.enabled=true #配置服務實例名稱 spring.cloud.config.discovery.serviceId=config-server spring.cloud.config.label=master #目前可選值有[dev,prod] spring.cloud.config.profile=dev #註釋掉下面這行,使用"config-server"服務名來註冊 #spring.cloud.config.uri= http://localhost:8888/

 

 

  • spring.cloud.config.discovery.enabled 是從配置中心讀取文件。
  • spring.cloud.config.discovery.serviceId 配置中心的servieId,即服務名。

這時發現,在讀取配置文件再也不寫ip地址,而是服務名,這時若是配置服務部署多份,經過負載均衡,從而高可用。架構

依次啓動eureka-servr,config-server,config-client 
訪問網址:http://localhost:8888app

 

訪問http://localhost:8881/test,瀏覽器顯示:
負載均衡

個人名字是:devEnv,年齡是11spring-boot

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

相關文章
相關標籤/搜索