SpringCloud之构建高可用分布式配置中心组件Config Server
发布日期:2021-05-06 15:33:31 浏览次数:23 分类:原创文章

本文共 6219 字,大约阅读时间需要 20 分钟。

一:简介

                        当服务实例很多的时候,所有的服务实例需要同时从配置中心Config Server读取文件,
             这时可以考虑将配置中心Config Server做成一个微服务,并且将其集群化,从而达到高可用。          

二:实战

  1.  主工程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>

     

  2.  创建服务注册中心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>

     

  3. 创建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>

     

  4.   创建子服务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>

     

  5.  测试,启动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的高可用
     
       
       
  6. GitHub上的文件信息
            
  7. Config Server高可用的结构图
      
上一篇:SpringCloud之消息总线(Spring Cloud Bus)刷新配置
下一篇:SpringCloud之分布式配置中心组件Config从远程Git仓库读取配置文件

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年03月30日 16时04分56秒