Spring Cloud Config Server mit dem Beispiel verstehen
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:
- sie auf der Festplatte vom Server wie ein Files System lagern
- 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
Anleitungen Spring Cloud
- Was ist Cloud Computing?
- Einführung in Netflix und seine Cloud-Computing-Technologie
- Einführung in Spring Cloud
- Spring Cloud Config Server mit dem Beispiel verstehen
- Spring Cloud Config Client mit dem Beispiel verstehen
- Spring Cloud Eureka Server mit dem Beispiel verstehen
- Spring Cloud Discovery Eureka Client mit dem Beispiel verstehen
- Load Balancing in Spring Cloud mit Ribbon und Beispiel verstehen
Show More