上一篇文章講述了一個服務如何從配置中心讀取文件,配置中心如何從遠程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