業餘草 SpringCloud教程 | 第七篇: 高可用的分散式配置中心(Spring Cloud Config)(Finchley版本)
上一篇文章講述了一個服務如何從配置中心讀取檔案,配置中心如何從遠端git讀取配置檔案,當服務例項很多時,都從配置中心讀取檔案,這時可以考慮將配置中心做成一個微服務,將其叢集化,從而達到高可用,架構圖如下:
一、準備工作
繼續使用上一篇文章的工程,建立一個eureka-server工程,用作服務註冊中心。
在其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上,指定服務埠為8889,加上作為服務註冊中心的基本配置,程式碼如下:
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,指定服務註冊地址為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
將其註冊微到服務註冊中心,作為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。加上服務註冊地址為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,即服務名。
這時發現,在讀取配置檔案不再寫ip地址,而是服務名,這時如果配置服務部署多份,通過負載均衡,從而高可用。
依次啟動eureka-servr,config-server,config-client
訪問網址:http://localhost:8889/
訪問http://localhost:8881/hi,瀏覽器顯示:
foo version 3
本文原始碼下載:
https://github.com/forezp/SpringCloudLearning/tree/master/sc-f-chapter7
四、參考資料
感謝您的關注!可加QQ1群:135430763,QQ2群:454796847,QQ3群:187424846。QQ群進群密碼:xttblog,想加微信群的朋友,可以微信搜尋:xmtxtt,備註:“xttblog”,新增助理微信拉你進群。備註錯誤不會同意好友申請。再次感謝您的關注!後續有精彩內容會第一時間發給您!原創文章投稿請傳送至532009913@qq.com郵箱。商務合作可新增助理微信進行溝通!
相關文章
- 業餘草 SpringCloud教程 | 第六篇: 分散式配置中心(Spring Cloud Config)(Finchley版本)SpringGCCloud分散式
- 業餘草 SpringCloud教程 | 第十篇: 高可用的服務註冊中心(Finchley版本)SpringGCCloud
- Spring Cloud(八)高可用的分散式配置中心 Spring Cloud ConfigSpringCloud分散式
- Spring Cloud Config 分散式配置中心【Finchley 版】SpringCloud分散式
- 業餘草 SpringCloud教程 | 第八篇: 訊息匯流排(Spring Cloud Bus)(Finchley版本)SpringGCCloud
- Spring Cloud(九)高可用的分散式配置中心 Spring Cloud Config 整合 Eureka 服務SpringCloud分散式
- SpringCloud分散式微服務雲架構 第七篇: 高可用的分散式配置中心(Config)SpringGCCloud分散式微服務架構
- 業餘草 SpringCloud教程 | 第九篇: 服務鏈路追蹤(Spring Cloud Sleuth)(Finchley版本)SpringGCCloud
- 整合spring cloud雲架構 -高可用的分散式配置中心SpringCloud架構分散式
- 業餘草 SpringCloud教程 | 第四篇:斷路器(Hystrix)(Finchley版本)SpringGCCloud
- 業餘草 SpringCloud教程 | 第五篇: 路由閘道器(zuul)(Finchley版本)SpringGCCloud路由Zuul
- 業餘草 SpringCloud教程 | 第三篇: 服務消費者(Feign)(Finchley版本)SpringGCCloud
- 業餘草 SpringCloud教程 | 第十一篇: 斷路器監控(Hystrix Dashboard)(Finchley版本)SpringGCCloud
- Spring Cloud實戰系列(六) - 分散式配置中心Spring Cloud ConfigSpringCloud分散式
- SpringCloud-分散式配置中心(config)SpringGCCloud分散式
- SpringCloud-Config 分散式配置中心SpringGCCloud分散式
- 業餘草 SpringCloud教程 | 第十二篇: 斷路器聚合監控(Hystrix Turbine)(Finchley版本)SpringGCCloud
- 業餘草 SpringCloud 教程 | 第一篇: 服務的註冊與發現Eureka(Finchley版本)SpringGCCloud
- SpringCloud分散式微服務雲架構 第六篇: 分散式配置中心(Spring Cloud Config)SpringGCCloud分散式微服務架構
- 業餘草 SpringCloud教程 | 第二篇: 服務消費者(rest+ribbon)(Finchley版本)SpringGCCloudREST
- Spring Cloud(4)——分散式配置中心SpringCloud分散式
- (五)spring cloud微服務分散式雲架構-配置中心服務化和高可用SpringCloud微服務分散式架構
- 非spring boot (即spring) 使用/整合 Spring cloud Config 分散式配置中心Spring BootCloud分散式
- 微服務SpringCloud之Spring Cloud Config配置中心Git微服務SpringGCCloudGit
- Spring Cloud Config 配置中心SpringCloud
- springcloud之config配置中心-Finchley.SR2版SpringGCCloud
- SpringCloud分散式微服務雲架構 第十篇: 高可用的服務註冊中心(Finchley版本)SpringGCCloud分散式微服務架構
- 基於Spring Cloud搭建分散式配置中心SpringCloud分散式
- Java springboot B2B2C o2o多使用者商城 springcloud架構 (七)高可用的分散式配置中心(Spring Cloud Config)JavaSpring BootGCCloud架構分散式
- 《springcloud 三》分散式配置中心SpringGCCloud分散式
- 跟我學SpringCloud | 第六篇:Spring Cloud Config Github配置中心SpringGCCloudGithub
- Spring Cloud Config 實現配置中心SpringCloud
- JAVA springboot微服務b2b2c電子商務系統-(七)高可用的分散式配置中心(Spring Cloud Config)JavaSpring Boot微服務分散式Cloud
- SpringCloud之分散式配置中心(六)SpringGCCloud分散式
- Spring Cloud Spring Boot mybatis 企業分散式微服務雲(六)分散式配置中心【Dalston版】CloudSpring BootMyBatis分散式微服務
- SpringCloud Config 配置中心SpringGCCloud
- Spring Cloud構建微服務架構分散式配置中心SpringCloud微服務架構分散式
- springcloud(八):配置中心服務化和高可用SpringGCCloud