Spring Cloud入門(六)Spring Cloud Config

前言

     本章講解Spring Cloud Config組件的相關知識

方法

1.概念

Spring Cloud Config爲分佈式系統中的外部化配置提供服務器和客戶端支持。使用Config Server,您可以集中管理所有環境中應用程序的外部屬性。客戶端和服務器上的概念與Spring Environment和PropertySource抽象完全相同,因此它們非常適合Spring應用程序,但可以與以任何語言運行的任何應用程序一起使用。當應用程序從開發人員遷移到測試人員並進入生產過程時,您可以管理這些環境之間的配置,並確保應用程序具有在遷移時需要運行的所有內容。服務器存儲後端的默認實現使用git,因此它輕鬆支持配置環境的標記版本,並且可以由各種工具訪問以管理內容。添加替代實現並將其插入Spring配置很容易。

上面是來自官網的一些描述,一句話就是它爲我們的微服務提供了集中化的外部配置支持,當我們的微服務達到成百量級時,該組件將顯得尤爲重要!

如同Eureka,它也是一個微服務。他有兩種角色:

Spring Cloud Config Server:該微服務通過與Git,svn等交互,動態的加載配置文件

Spring Cloud Config Client:該微服務與Server端交互,獲取所需要的配置,如eureka、provider、consumer等

2.Spring Cloud Config Server配置

1)首先需要在github上創建我們的配置文件工程

2)將該工程拉取至本地並添加相應配置文件

application.properties

spring.profiles.active=dev

application-dev.properties

#dev
spring.profiles=dev
spring.application.name=config-server-dev

並且將這些配置文件提交至git

3)創建config-server工程,進行必要的配置

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>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.7.RELEASE</version>
	</parent>
	<groupId>cn.edu.ccut</groupId>
	<artifactId>springcloud-config-server</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	
	<properties>
		<!-- 設定Java的版本 -->
		<java.version>1.8</java.version>
		<!-- 解決pom.xml首行報錯 -->
		<maven-jar-plugin.version>3.1.0</maven-jar-plugin.version>
		<!-- spring cloud版本 -->
		<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
	</properties>
	
	<dependencies>
		<!-- 配置springBoot的啓動器 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<!-- config-server座標 -->
		<dependency>
		    <groupId>org.springframework.cloud</groupId>
		    <artifactId>spring-cloud-config-server</artifactId>
		</dependency>
		<!-- 配置devtools  -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>
		<!-- 配置springBoot的test啓動器 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
		</dependency>
	</dependencies>
	<!-- spring cloud依賴管理 -->
	<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>
	
	 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>cn.edu.ccut.ConfigServerApp</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
</project>

application.properties

#server application
spring.application.name=config-server
#server port
server.port=8688
#config git uri
spring.cloud.config.server.git.uri=https://github.com/wangjian136/spring-cloud-config.git
#search path
spring.cloud.config.server.git.search-paths=config-server

啓動器類配置加入該註解:@EnableConfigServer

package cn.edu.ccut;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;


@EnableConfigServer
@SpringBootApplication
public class ConfigServerApp {

	public static void main(String[] args) {
		SpringApplication.run(ConfigServerApp.class, args);
	}
	
}

4)啓動項目輸入如下地址進行訪問

http://localhost:8688/application-dev.properties

http://localhost:8688/application-test.properties

出現這兩個畫面則證明Config Server配置成功!!

3.Spring Cloud Config Client配置

客戶端我們選擇一個eureka server來進行講解吧!

1)創建一個Eureka的Server工程

以前的Eureka Server的單機版工程是如下配置的,存在開發環境和測試環境的配置切換

2)在git上新建Eureka Server的配置文件並上傳

3)去掉原來eureka server上的配置文件,新建bootstrap.properties配置文件

bootstrap.properties配置文件爲系統級的配置文件,當application.properties文件和bootstrap.properties共存時,很顯然bootstrap.properties優先級更高!

我們對應的將剛剛測試的server端的application.properties文件進行修改

#server application
spring.application.name=config-server
#server port
server.port=8688
#config git uri
spring.cloud.config.server.git.uri=https://github.com/wangjian136/spring-cloud-config.git
#search path
spring.cloud.config.server.git.search-paths=eureka-server

在bootstrap.properties添加如下內容:

#spring config server
spring.cloud.config.uri=http://localhost:8688
spring.cloud.config.name=application
spring.cloud.config.profile=dev

這樣我們在啓動這個eureka server的時候,就會自動的去config server中去尋找

4)啓動eureka server進行測試

經過測試,完美運行!

注意:本次使用的是.properties進行的配置,並且在git中設置了專門的文件夾路徑,這看起來每個config server只能爲一個微服務提供自動化配置!但是事實並不是如此,據我所知,yml配置文件放在根目錄可以!希望大家幫忙解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章