Spring Cloud Config Server mit dem Beispiel verstehen

View more Tutorials:

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:
  1. Was ist Config Server ? Warum einen Config Server in der verteilten Applikation brauchen.
  2. die zentralisierte Konfiguration Management (Centralized Configuration management), und die versionierte Konfiguration Management (Versioned Configuration Management) erklären.
  3. Eine Repository zur Lagerung der Konfigurationsinformation bilden.
  4. 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

Test:

Die nächste Unterricht

View more Tutorials: