codestory

Spring Cloud Config Server mit dem Beispiel verstehen

  1. Das Zweck des Artikel
  2. Config Server - Why?
  3. Wie lagert Config Server die Daten?
  4. Das Projekt Spring Boot erstellen
  5. Config Server konfigurieren
  6. Die Applikation laufen

1. Das Zweck des Artikel

OK, Das ist der erste Schritt für Sie um eine Spring Cloud benutzende verteilte Applikation. In diesem Artikel leite ich Sie bei der Erstellung eine Dienstleistung zum Managment der Konfiguration für die anderen Dienstleistungen.
Die Inhalte werden in diesem Artikel diskussiert:
  • Was ist Config Server ? Warum einen Config Server in der verteilten Applikation brauchen.
  • die zentralisierte Konfiguration Management (Centralized Configuration management), und die versionierte Konfiguration Management (Versioned Configuration Management) erklären.
  • Eine Repository zur Lagerung der Konfigurationsinformation bilden.
  • Spring Cloud Config Server bauen und laufen.

2. Config Server - Why?

OK, jetzt werden wir diskussieren, warum in einer verteilten Applikation (Distributed Application) brauchen Sie eine Dienstleistung zur Konfigurationsmanagement für die anderen Dienstleistungen in der Applikation
Unter ist die Illustration einer verteilten Applikation - "Taxi Management", einschließlich drei Sub-Applikation und jede Applikation wird auf einen Server eingesetzt (deploy)
Jede Dienstleistung (die Applikation) ist ein durch eine Entwicklergruppe entwickeltes Projekt. In einem Projekt enthaltet es außer Kode die Konfigurationen enthaltetn, wie die Information verbindend mit der Database, die Information über die Stelle der anderen Datenquelle ... Es wird eine schlechte Idee wenn Sie "hard code" die Information in der Kode von Projekt. Deshalb sollen diese Informationen in die eigenen Files gelegt werden. Sie werden die Konfiguration File genannt.
Nach der Erledigung wird das Projekt gepackt und auf den Server eingesetzt. Normalerweise werden die Konfigurationsfiles mit der Kode eingepackt und dadurch wird ein einzigen Produkt (file) gebaut. So wenn etwas in Ihrer Konfigurtion ändert, sollen Sie kompilieren, zum Projekt einpacken und auf Server implementieren. Das ist sicher eine Herausforderung in einer verteilten Applikation Umwelt.
Config Server?
Die Idee zur Lösung der obengemeinten Fragen ist eine Dienstleistung (die Applikation) brauchen um die Konfigurationen für die anderen Dienstleistungen zu managen und sie läuft unabhängig auf einen Server
Die oben Idee bringt die folgenden Vorteile
  • TODO
  • Spring Cloud Bus:
Wenn Sie eine Konfigurationsfile auf Config-Server ändern, möchten Sie natürlich diese Änderungen mit Client informieren. Spring Cloud Bus bietet ein Mechanismus um mit Client zu informieren, dass " Es gibt eine Änderung" und fordert den Client , die neue Information zu aktuellisieren

3. Wie lagert Config Server die Daten?

Wenn Sie alle Konfiguration Files auf Config Server legen, stellen Sie eine Frage , wie Config Server diese Files lagert?
Es gibt 2 Hauptmaßnahmen damit Config Server die Konfiguration Files lagert:
  1. sie auf der Festplatte vom Server wie ein Files System lagern
  2. GIT oder SVN (Subversion) benutzen.
Im Artikel werde ich einen Config Server bauen, auf GitHub die Konfiguration Files lagern. Ich habe einen GitHub Repository erstellt:

4. Das Projekt Spring Boot erstellen

Auf die Eclipse erstellen Sie ein Projekt Spring Boot:
Geben Sie ein
  • Name: SpringCloudConfigServer
  • Group: org.o7planning
  • Artifact: SpringCloudConfigServer
  • Description: Spring Cloud Config Server
  • Package: org.o7planning.scconfigserver
Die Testversion 2.0.0.M..xx Spring Boot ist mit Spring Cloud fehlerhaft. So werden wir Spring Boot 1.5.9. benutzen
OK, Das Projekt wurde erstellt
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>

    <groupId>org.o7planning</groupId>
    <artifactId>SpringCloudConfigServer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>SpringCloudConfigServer</name>
    <description>Spring Cloud Config Server</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </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>Edgware.RELEASE</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>
    </build>


</project>
@EnableConfigServer
SpringCloudConfigServerApplication.java
package org.o7planning.scconfigserver;

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

@EnableConfigServer  // ==> Important!!
@SpringBootApplication
public class SpringCloudConfigServerApplication {

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

5. Config Server konfigurieren

Die Dienstleistung (die Applikation) wird in Port 8888 eingesetzt und gelaufen und auf GitHub die Konfigurationsfiles gelagert. So brauchen Sie einigen Konfigurationen in der File application.properties.
application.properties
server.port=8888

spring.cloud.config.server.git.uri=https://github.com/o7planning/spring-cloud-config-git-repo-example.git

# For File System:
# spring.profiles.active=native
# spring.cloud.config.server.native.searchLocations=C:/Users/tran/Desktop/config
Wenn Git Server (oder SVN Server) username/password fordert, sollen Sie die Konfiguration einfügen. Sie können in dem Anhang am Ende des Artikel verweisen

6. Die Applikation laufen

Klicken Sie die Rechtmaustaste aufs Projekt und wählen
  • Run As/Spring Boot App