Spring Cloud配置服務

這是使用Spring Cloud構建分佈式應用程序的第一步。 在本文中將演示/指導您創建服務以管理其他服務的配置。

Spring Cloud配置服務

本文中討論的內容包括:

  • 什麼是配置服務器? 爲什麼在分佈式應用程序中需要服務器?
  • 說明集中配置管理和版本化配置管理。
  • 設置存儲庫以存儲配置信息。
  • 構建並運行Spring Cloud服務器。

1. 爲什麼需要配置服務器?

本小節中將討論爲什麼需要一個服務來管理分佈式應用程序中其他服務的配置。
下面是分佈式應用程序的示意圖 - 「出租車管理應用程序」,包括三個子應用程序(乘客管理,司機管理和旅程管理),每個子應用程序都部署在服務器上。

Spring Cloud配置服務

每個服務(應用程序)都是由開發人員團隊開發的項目。 在項目中,除了代碼之外,它還包含配置,例如,連接到數據庫的信息,有關數據源位置的信息等。如果您在項目代碼中創建此信息的硬代碼(在代碼中寫死數據庫連接信息),這是一個很不好的做法。 因此,此信息通常放在單獨的文件中,這些文件稱爲配置文件

Spring Cloud配置服務

完成應用功能開發後,項目將打包並部署到服務器上。 通常,配置文件將與代碼一起打包並形成唯一(文件)產品。 因此,如果配置中有任何更改,則需要編譯並重新打包項目並將其重新部署到服務器上。 這顯然是分佈式應用程序環境中的挑戰。

使用配置服務器

解決上述問題的想法是需要服務(應用程序)來管理其他服務的配置。 它在服務器上獨立運行。

Spring Cloud配置服務

上述做法帶來以下好處:

在Config-Server上更改配置文件時,您肯定希望將此類更改通知給客戶端。 Spring Cloud Bus提供了一種機制,用於通知客戶「存在更改」並要求客戶端更新新信息。

Spring Cloud配置服務

2. Config Server如何存儲數據?

將所有配置文件放在配置服務器(Config Server)上時,您將詢問配置服務器(Config Server)如何存儲這些文件。

Spring Cloud配置服務

配置服務器(Config Server)有兩種主要的存儲配置文件的方法:

  • 將它們作爲系統文件存儲在服務器的硬盤驅動器上。
  • 使用GIT或SVN(Subversion)。

在本節中,將創建一個配置服務器(Config Server),它將配置文件存儲在GitHub上。 創建了一個GitHub存儲庫:

Spring Cloud配置服務

3. 創建Spring Boot項目

在Eclipse上,創建一個Spring Boot項目:

輸入:

  • Name: SpringCloudConfigServer
  • Group: com.yiibai
  • Artifact: SpringCloudConfigServer
  • Description: Spring Cloud Config Server
  • Package: com.yiibai.scconfigserver

Spring Cloud配置服務

接着選擇創建的功能:
Spring Cloud配置服務

好的,項目已經創建完成:

Spring Cloud配置服務

文件:pom.xml -

<?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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.yiibai</groupId>
    <artifactId>SpringCloudConfigServer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>SpringCloudConfigServer</name>
    <description>Spring Cloud Config Server</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.RC2</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <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>
            </plugin>
        </plugins>
        <defaultGoal>compile</defaultGoal>
    </build>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>

</project>

在文件:SpringCloudConfigServerApplication.java 中添加註解:@EnableConfigServer ,完整代碼如下所示 -

package com.yiibai.scconfigserver;

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

@EnableConfigServer // 此代碼註解必須要加上
@SpringBootApplication
public class SpringCloudConfigServerApplication {

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

4. 配置Config Server

此服務(應用程序)將在端口8888上部署並運行,並在GitHub上存儲配置文件,因此需要在文件:application.properties 文件中進行一些配置。

Spring Cloud配置服務

文件:application.properties -

server.port=8888

spring.cloud.config.server.git.uri=https://github.com/yiibaicom/spring-cloud-config-server.git

# For File System:
# spring.profiles.active=native
# spring.cloud.config.server.native.searchLocations=C:/Users/tran/Desktop/config

如果Git Server(或SVN Server)需要用戶名/密碼,則需要進行其他配置。

5. 配置Config Server

右鍵單擊項目名稱,選擇:Run As -> Maven install ,然後打開命令行,進入到生成的Jar的target目錄,執行以下命令 -

D:\worksp\springcloud\SpringCloudConfigServer\target> java -jar SpringCloudConfigServer-0.0.1-SNAPSHOT.jar

運行後,輸出以下結果 -

Spring Cloud配置服務

測試Spring Cloud,打開瀏覽器訪問URL:

Spring Cloud配置服務

也就是上面創建的Githup中的內容:
Spring Cloud配置服務