In verteilten Systemen werden Konfigurationsdateien in jedem Projekt verstreut, was es schwierig macht, zentral zu verwalten, oder wenn die Konfiguration geändert wird, muss sie neu gestartet werden, bevor sie wirksam werden kann. Als nächstes verwenden wir Spring Cloud -Konfiguration, um diesen Schmerzpunkt zu lösen.
Konfigurationsserver
Wir verwenden config-server als Konfigurationsserver und müssen nur Abhängigkeiten hinzufügen:
<Depopenty> <gruppe> org.springFramework.cloud </Groupid> <artifactId> Spring-Cloud-Config-Server </artifactid> </abhängig>
In application.yml konfigurieren:
Spring: Anwendung: Name: config-server # Name Cloud: Konfiguration: Server: Git: URI: Datei: // Benutzer/yangdd/documents/code/github/config-Repo # Verwenden Sie lokales Repository (zum Testen), Format: Datei: // $ {user.home}/config-repo, wenn es sich um Windows handelt. https://github.com/yangdd1205/spring-cloud-master/ #username: Benutzername #Passwort: Passwort #Standard-label: config #kann begehen idFederprojekte haben im Allgemeinen das Prinzip der "Konvention ist größer als die Konfiguration". Daher sind die Konfigurationsdateien in unserem Git im Allgemeinen nach {application}-{profile} .yml oder {application}-{Profil} .Properties benannt.
Wir haben zwei Dateien client-dev.yml im Master-Zweig von Config-Repo:
Info: Master-Dev
Client-prod.yml:
Info: Master-Prod
In der Konfigurationszweig gibt es zwei Datei client-dev.yml:
Info: config-dev
Client-prod.yml:
Info: config-prod
Start Config-Server Wir können über die folgende Zuordnungsbeziehung auf die Konfigurationsdateien in GIT zugreifen:
/<Application >/eryprofile ·/ <Label] weibs/ <application >-eryprofile>
http: // localhost: 4001/client-dev.yml
Config Client
Wir verwenden Config-Client als Konfigurationsclient und fügen Abhängigkeiten hinzu:
<Depopentcy> <gruppe> org.springframework.boot </Groupid> <artifactId> Spring-Boot-Starter-Web </artifactid> <depectIncy> <Groupid> org.springFramework.cloud
Konfigurieren Sie in Bootstrap.yml (Bootstrap.yml wird vor application.yml) geladen:
Frühling: Anwendung: Name: Client Cloud: Konfiguration: URI: http: // localhost: 4001/## Repräsentiert die Adresse des Konfigurationszentrums Profil: Dev # entspricht der Spring.Profiles.Active Attribut, aber die Priorität ist höher als Spring.Profile.Active #Label: Konfigurieren Sie # Wenn Sie das Nutzungsbezeichnungsbezeichnung nicht spezifiziert, werden Sie den Server nicht angegeben.
Erstellen Sie einen Testcontroller in Config-Client:
@RestControllerPublic Class TestController {@Value ("$ {info}") private String -Info; @RequestMapping (value = "/getInfo") public String getInfo () {return this.info; }}Besuchen Sie http: // localhost: 4002/getInfo
Ändern Sie das Profil in der Konfigurations-Client-Konfigurationsdatei, um es zu ermitteln, und greifen Sie darauf zu, um die Ergebnisse anzuzeigen.
Jetzt haben wir die Konfigurationsdateien implementiert, um sie auf einheitliche Weise zu verwalten. Wie können wir jedoch nach dem Ändern der Konfigurationsdateien nicht neu starten und wirksam werden?
Wir führen Abhängigkeiten in Konfigurationsklient ein:
<Depopenty> <gruppe> org.springFramework.boot </Groupid> <artifactId> Spring-Boot-Starter-Actuator </artifactid> </abhängig>
Fügen Sie die Annotation @ReFreshScope der Klasse hinzu, die eine dynamische Aktualisierung benötigt. Hier fügen wir sie dem TestController hinzu. Und deaktivieren Sie die Berechtigungsauthentifizierung des Aktuators in der Konfigurationsdatei:
Management: Sicherheit: aktiviert: Falsch
Starten Sie das Projekt neu, http: // localhost: 4002/getInfo Das Ergebnis lautet: config-dev und ändern Sie nun die Datei config-dev.yml:
Info: config-dev-1.0
Rufen Sie die Aktuatormethode an und aktualisieren Sie manuell. http: // localhost: 4002/aktualisiert Hinweis: Es muss eine Post -Methode sein. Sie können sehen, was Änderungen sind:
["Info"]
Besuchen Sie http: // localhost: 4002/GetInfo erneut und das Ergebnis ist: config-dev-1.0.
Wir haben festgestellt, dass die Konfiguration zwar dynamisch aktualisiert werden kann, die Aktualisierungsmethode jedoch jedes Mal manuell aufgerufen werden muss. Wenn ich 1.000 Dienste habe, muss ich es 1.000 Mal nennen. Gibt es einen besseren Weg? Das soll es in Verbindung mit dem Federwolkenbus verwenden.
Sehr verfügbar
Jetzt ist unser Konfigurationsserver ein Einzelpunktdienst, und sobald der letztere Konfigurationsclient aufgehängt ist, wird er nicht verwendet. In der Generation muss der Konfigurationsserver also hoch verfügbar sein. Wie geht es also? Es ist sehr einfach. Genau wie die zuvor erwähnte hohe Verfügbarkeit von Eureka, müssen Sie nur mehrere weitere Konfigurationsserver bereitstellen.
Wir verwenden das Projekt Eureka als Registrierungszentrum mit dem Port: 7001.
Kopieren Sie Config-Server in config-server-1 mit Port: 4003 und registrieren Sie beide Konfigurationsserver im Registrierungszentrum.
Registrieren Sie den Konfigurations-Klient in der Registrierung und geben Sie den Konfigurationsserver von Eureka an:
Spring: Cloud: Konfiguration: #uri: http: // localhost: 4001/## Repräsentiert die Adresse des Konfigurationszentrums, Geben Sie direkt das Konfigurationsserver-Adresse an: Dev #Label: Konfiguration Ermittlung: aktiviert: TRUE # Aktivieren Sie den Namen Config Server Service-ID: config-server # config-Server-Dienstname
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.