
SpringCloud之构建高可用分布式配置中心组件Config Server
发布日期:2021-05-06 15:33:31
浏览次数:23
分类:原创文章
本文共 6219 字,大约阅读时间需要 20 分钟。
一:简介
当服务实例很多的时候,所有的服务实例需要同时从配置中心Config Server读取文件,
这时可以考虑将配置中心Config Server做成一个微服务,并且将其集群化,从而达到高可用。
二:实战
- 主工程parent
pom.xml文件内容
<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.kgf</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>parent</name> <!--继承一个父模块,然后再引入相应的依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <!--relativePath是可选的,maven会首先搜索这个地址,在搜索本地远程repositories之前 --> <relativePath /> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java-version>1.8</java-version> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> </properties> <!--下面的方式通过import可以实现多继承的问题 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <modules> <module>springcloud-config-server</module> <module>springcloud-config-client</module> <module>springcloud-eureka-server</module> </modules></project>
- 创建服务注册中心springcloud-eureka-server子服务(用来注册Config的服务和客户端)
⑴创建启动类SpringCloudEurekaServerApplication.java
⑵ 创建配置文件application.yml
⑶pom.xml文件
<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> <parent> <groupId>com.kgf</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>springcloud-eureka-server</artifactId> <dependencies> <!-- 引入eureka-server依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <!--能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
- 创建Config服务端服务springcloud-config-server(将会启动两个不同端口的实例)
⑴创建启动类SpringCloudConfigServer.java
⑵创建application.yml文件(这里我们还是从GitGub上获取Config客户端的配置信息)
---server: port: 8888spring: cloud: config: server: git: uri: https://github.com/kangf897570/SpringcloudConfig search-paths: - respo1 username: kangf897570 password: Kangf@897570 label: master application: name: config-server profiles: dev eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ ---server: port: 9999spring: cloud: config: server: git: uri: https://github.com/kangf897570/SpringcloudConfig search-paths: - respo2 username: kangf897570 password: Kangf@897570 label: master application: name: config-server profiles: test eureka: client: service-url: defaultZone: http://localhost:8761/eureka/
⑶pom.xml文件
<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> <parent> <groupId>com.kgf</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>springcloud-config-server</artifactId> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <!-- 引入eureka依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
- 创建子服务springcloud-config-client
⑴创建启动类SpringCloudConfigClientApplication.java
⑵创建bootstrap.yml文件
⑶pom.xml文件
<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> <parent> <groupId>com.kgf</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>springcloud-config-client</artifactId> <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.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 引入eureka依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies></project>
- 测试,启动springcloud-eureka- server(服务注册中心),启动springcloud-config-server(分布式配置中心,这里我们需要启动两个服务实例,接口分别是8888,9999),最后启动springcloud-config-client(Config的客户端,可以从springcloud-config-server中获取GitHub上的配置文件信息),那么我们多次从新启动springcloud-config-client服务,它会轮流(负载均衡)的从springcloud-config-server的两个不同端口实例(8888,9999)去获取GitHub上的配置信息,完成Config Server的高可用
- GitHub上的文件信息
- Config Server高可用的结构图
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年03月30日 16时04分56秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
零基础入门JavaScript 这一篇笔记就够了
2019-03-04
MySQL_属性、记录长度、设计范式、表关系
2019-03-04
MySQL_安全管理、表单传值、php操作
2019-03-04
POJ 2299 Ultra-QuickSort(树状数组+离散化+求逆序数)
2019-03-04
BUUCTF web WarmUp
2019-03-04
hcnp笔记
2019-03-04
python数据分析
2019-03-04
MySQL(四)数据库结构设计
2019-03-04
JavaScript 函数作用域
2019-03-04
2021-05-03
2019-03-04
Mybatis-plus 常用注解
2019-03-04
HTML基本结构
2019-03-04
图(三):拓扑排序、关键路径
2019-03-04
mybatis 如何切割字符串 查询多个值
2019-03-04
算法初步 (排序, 散列, 贪心, 二分, two pointers)
2019-03-04
Python学习-基础(五)
2019-03-04
myqsl下载安装
2019-03-04
Tomcat下载安装
2019-03-04