Technologieaustausch

Grain Mall-Studiennotizen – 23 – verteilte Komponenten – SpringCloud Alibaba – Nacos-Konfigurationscenter – einfaches Beispiel

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Ich habe bereits gelernt, Nacos als Registrierungszentrum zu verwenden. In diesem Abschnitt lernen wir eine weitere Kernfunktion von Nacos kennen:配置中心

1. Einführung in das Nacos Configuration Center

Nacos ist eine benutzerfreundliche Plattform für dynamische Serviceerkennung und Konfigurationsmanagement. Als Konfigurationscenter bietet Nacos folgende Kernfunktionen und Vorteile:

  1. Dynamisches Konfigurationsmanagement: Mit Nacos können Benutzer Konfigurationsinformationen dynamisch ändern und übertragen, ohne den Dienst neu starten zu müssen, wodurch Konfigurationsaktualisierungen in Echtzeit erreicht werden.

  2. Konfigurieren Sie einen zentralen Speicher: Nacos bietet einen zentralen Konfigurationsspeicher, der die Verwaltung und Wartung von Konfigurationsinformationen erleichtert und das Problem der Verstreuung der Konfiguration in verschiedenen Umgebungen und Systemen vermeidet.

  3. Konfigurieren Sie die Versionskontrolle: Nacos unterstützt die Konfigurationsversionskontrolle, die den Konfigurationsänderungsverlauf verfolgen und Rollback-Vorgänge erleichtern kann.

  4. Konfigurieren Sie die Freigabe: Nacos ermöglicht die gemeinsame Nutzung von Konfigurationen zwischen Diensten, wodurch die Wiederverwendbarkeit von Konfigurationen verbessert und Redundanzen reduziert werden.

  5. Isolation konfigurieren: Durch das Konzept des Namespace unterstützt Nacos die Konfigurationsisolation verschiedener Umgebungen (z. B. Entwicklung, Test und Produktion), um sicherzustellen, dass sich die Konfigurationen zwischen Umgebungen nicht gegenseitig beeinträchtigen.

  6. Konfigurieren Sie Zuhören und Drücken: Nacos bietet eine Konfigurationsüberwachungsfunktion, um Aktualisierungen aktiv an den Client zu übertragen, um eine Hot-Aktualisierung der Konfiguration zu erreichen.

  7. Sicherheit: Nacos unterstützt Konfigurationszugriffskontrolle und Berechtigungsverwaltung, um sicherzustellen, dass nur autorisierte Benutzer auf Konfigurationen zugreifen oder diese ändern können.

  8. Unterstützung mehrerer Umgebungen: Nacos unterstützt eine Vielzahl von Bereitstellungsumgebungen und kann das Konfigurationsmanagement unterschiedlicher Größenordnungen und Anforderungen erfüllen.

  9. Integrieren Sie mit Spring Cloud: Nacos ist eng in Spring Cloud integriert und bietet Spring-Cloud-Starter-Alibaba-Nacos-Config und andere Komponenten, wodurch der Prozess der Verwendung des Nacos-Konfigurationscenters in Spring Cloud-Anwendungen vereinfacht wird.

  10. Benutzerfreundlichkeit: Nacos bietet eine benutzerfreundliche Benutzeroberfläche, die das Anzeigen, Ändern und Verwalten von Konfigurationen intuitiv und einfach macht.

Als Konfigurationszentrum eignet sich Nacos für Microservice-Architekturen, Cloud-native Anwendungen und verteilte Systeme, die ein dynamisches Konfigurationsmanagement erfordern. Durch die zentrale Verwaltung von Konfigurationen hilft Nacos Unternehmen dabei, die Effizienz und Sicherheit des Konfigurationsmanagements zu verbessern und gleichzeitig die Entwicklungs-, Betriebs- und Wartungsarbeiten zu vereinfachen.

2. Anweisungen zur Verwendung des Nacos Configuration Center

Gebrauchsanweisungen sind in der offiziellen Dokumentation ausführlich aufgeführt. Klicken Sie hier, um die Dokumentation anzuzeigenhttps://nacos.io/zh-cn/docs/v2/ecology/use-nacos-with-spring-cloud.html

1. Deklarieren Sie die Maven-Abhängigkeit im Konfigurationscenter

Um das Konfigurationscenter nutzen zu können, müssen Sie zunächst Abhängigkeiten hinzufügen.

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4

Da im Guli Mall-Projekt alle Dienste das Nacos-Konfigurationscenter verwenden müssen, wird diese Abhängigkeit zum gemeinsamen Modul hinzugefügt.

2. Konfigurieren Sie die Adresse und den Anwendungsnamen des Nacos-Servers in „bootstrap.properties“.

Deklarieren Sie im Ressourcenverzeichnis des Projekts oder Moduls die Adresse und den Dienstnamen des Nacos-Servers in bootstrap.properties.

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=gulimall-coupon
  • 1
  • 2

3. Erstellen Sie eine Konfigurationsdatei in der Nacos-Konfigurationslistenschnittstelle

Fügen Sie hier eine Bildbeschreibung ein

Nachdem Sie auf „Konfiguration erstellen“ geklickt haben, wird die folgende Seite angezeigt.

Fügen Sie hier eine Bildbeschreibung ein

  • ① Die Daten-ID entspricht dem Dateinamen und muss den Dienstnamen enthalten, z. B. gulimall-coupon.properties
  • ② Der Konfigurationsdateityp unterstützt mehrere Typen. Bei Microservices handelt es sich normalerweise um Yaml oder Eigenschaften.
  • ③ Das ​​schwarze Feld enthält die auszufüllenden Konfigurationsinformationen

existieren Nacos Spring Cloud Mitte,Data Id Das vollständige Format lautet wie folgt:

${prefix}-${spring.profiles.active}.${file-extension}
  • 1
  • prefix Die Standardeinstellung istspring.application.name Der Wert kann auch über das Konfigurationselement übergeben werdenspring.cloud.nacos.config.prefixkonfigurieren.
  • spring.profiles.active Das heißt, entsprechend der aktuellen Umgebungprofile Weitere Informationen finden Sie in der Spring Boot-Dokumentation. Hinweis: wannspring.profiles.active Wenn es leer ist, ist der entsprechende Connector nicht vorhanden und das Spleißformat von dataId wird${prefix}.${file-extension}
  • file-exetension Um das Datenformat des Inhalts zu konfigurieren, können Sie das Konfigurationselement übergebenspring.cloud.nacos.config.file-extension konfigurieren.Unterstützt derzeit nurproperties Undyaml Typ.

Drei, testen

1. Fügen Sie die Konfigurationsinformationen in das Projekt ein

Wir fügen die Informationen zunächst in die Projektkonfigurationsdatei ein und konfigurieren die folgenden Informationen in der Konfigurationsdatei application.properties des Coupon-Moduls:

coupon.user.name=lcy
coupon.age=22
  • 1
  • 2

Fügen Sie hier eine Bildbeschreibung ein

2. Testcode schreiben

Fügen Sie im Controller eine Methode hinzu, um die Konfigurationsinformationen in der Konfigurationsdatei zu verwenden.

	@Value("${coupon.user.name}")
    private String userName;
    @Value("${coupon.user.age}")
    private String userAge;

    @RequestMapping("test")
    public R test(){
        return R.ok().put("name", userName).put("age", userAge);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Beachten Sie, dass wir im obigen Code die Konfiguration in der Konfigurationsdatei über die Annotation @Value in die Klassenvariable einfügen und dann in der Methode darauf verweisen.

3. Testen

Geben Sie nach dem Start des Dienstes die folgende Adresse in Ihren Browser ein.

http://localhost:7000/coupon/coupon/test
  • 1

Die Ausgabe lautet wie folgt und zeigt an, dass die Informationen in der Konfigurationsdatei gelesen wurden.
Fügen Sie hier eine Bildbeschreibung ein

4. Konfigurieren Sie die Konfigurationsinformationen für das Konfigurationscenter

Nehmen Sie den Coupon-Service als Beispiel für die Konfiguration.
Fügen Sie hier eine Bildbeschreibung ein

Klicken Sie auf die Schaltfläche „Bearbeiten“ auf der rechten Seite der Liste der Konfigurationsdateien, um die Bearbeitungsoberfläche aufzurufen.

Fügen Sie hier eine Bildbeschreibung ein

Beachten Sie, dass wir die lokale Konfiguration im vorherigen Schritt nicht gelöscht haben, um den Unterschied und die Verbindung zwischen der Konfigurationscenter-Konfigurationsdatei und der lokalen Konfigurationsdatei zu verdeutlichen.

Derzeit ist im Konfigurationscenter nur eine Konfiguration konfiguriert. Diese Konfiguration ist auch in der lokalen Konfiguration verfügbar, der Wert ist jedoch unterschiedlichcoupon.user.name=lcy, das Konfigurationscenter istcoupon.user.name=lcy2

Aktualisieren Sie den Browser nach dem Neustart des Dienstes. Die Ergebnisse sind wie folgt.

Fügen Sie hier eine Bildbeschreibung ein
Offensichtlich wird der Wert von name aus dem Konfigurationscenter und nicht aus der lokalen Konfigurationsdatei übernommen.Der Wert im Konfigurationscenter überschreibt den Wert in der lokalen Konfigurationsdatei.

Fehlerprotokoll

Fehleraufzeichnung des Guli Mall-Konfigurationscenters