Technologieaustausch

Einführung in den „Service Discovery Mechanism“ in Microservices

2024-07-12

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

  • Der Service-Discovery-Mechanismus von Microservices ist eine Methode zur dynamischen Lokalisierung von Serviceinstanzen für die Kommunikation in einer Microservices-Architektur.

  • Es stützt sich hauptsächlich auf das Registrierungszentrum, um die Dienstregistrierung, Abfrage und den Lastausgleich zu unterstützen, wodurch die Skalierbarkeit und Flexibilität des Systems verbessert wird.

1. Grundkonzepte

Unter Service Discovery versteht man den Prozess der automatischen Erkennung und Identifizierung verfügbarer Dienste in einem verteilten System.

Da in einer Microservices-Architektur Dienste in mehrere kleine und autonome Dienste aufgeteilt sind, die auf verschiedene Server verstreut sind, ist ein Diensterkennungsmechanismus erforderlich, um eine effektive Kommunikation zwischen Diensten sicherzustellen.

2. Hauptschritte

  • Serviceregistrierung

    • Wenn eine Microservice-Instanz gestartet wird, registriert sie ihre Netzwerkstandortinformationen (z. B. IP-Adresse und Portnummer) und Dienstidentifikation im Service-Registrierungscenter.
    • Dieser Registrierungsprozess erfolgt normalerweise automatisch und erfordert kein menschliches Eingreifen.
    • Das Registrierungszentrum ist für die Pflege der Registrierungsinformationen aller Dienstinstanzen und die Unterstützung der dynamischen Registrierung und Abmeldung von Dienstinstanzen verantwortlich.
  • Serviceanfrage

    • Wenn ein Mikrodienst einen anderen Mikrodienst aufrufen muss, fragt er die Dienstregistrierung nach der aktuell verfügbaren Netzwerkadresse des erforderlichen Dienstes ab.
    • Das Registrierungszentrum gibt die Adressliste der Dienstinstanzen zurück, und der Anrufer kann eine Dienstinstanz für die Kommunikation gemäß der Lastausgleichsrichtlinie auswählen.

3. Schlüsselkomponenten

  • Dienstregister

    • Es ist die Kernkomponente des Diensterkennungsmechanismus und für die Verwaltung und Speicherung der Registrierungsinformationen aller Dienstinstanzen verantwortlich.
    • Es bietet eine API-Schnittstelle für Dienstinstanzen zum Registrieren und Abbrechen von Vorgängen und unterstützt außerdem Dienstkonsumenten beim Abfragen der Registrierungsinformationen von Dienstinstanzen.
  • Dienstleister

    • Es handelt sich um eine Microservice-Instanz, die einen bestimmten Dienst bereitstellt.
    • Es registriert seine eigenen Dienstinformationen beim Start in der Dienstregistrierung und hebt die Registrierung seiner eigenen Dienstinformationen auf, wenn es beendet wird.
  • Service-Verbraucher

    • Es handelt sich um eine Microservice-Instanz, die andere Dienste aufrufen muss.
    • Es erhält die Netzwerkadresse des benötigten Dienstes durch Abfrage der Dienstregistrierung und stellt die Kommunikation mit diesem her.

4. So implementieren Sie den Diensterkennungsmechanismus

Der Diensterkennungsmechanismus kann je nach Implementierungsmethode in zwei Typen unterteilt werden: Clienterkennung und Servererkennung:

  • Client-Erkennungsmodus

    • Der Client ist dafür verantwortlich, das Registrierungscenter abzufragen, eine Liste der verfügbaren Dienste zu erhalten und gemäß der Lastausgleichsrichtlinie direkt mit Dienstinstanzen zu interagieren.
    • Der Vorteil besteht darin, dass der Kunde Lastausgleichsstrategien flexibel formulieren kann, wodurch die Abhängigkeit vom Service-Registrierungscenter verringert wird.
    • Der Nachteil besteht darin, dass der Client eine komplexe Erkennungslogik implementieren muss, was die Komplexität des Codes und die Wartungskosten erhöht.
  • Servererkennungsmodus

    • Der Client sendet eine Anfrage an den Server (normalerweise ein API-Gateway oder ein Service-Proxy), und der Server ist für die Abfrage des Registrierungscenters und die Weiterleitung der Anfrage an die eigentliche Serviceinstanz verantwortlich.
    • Der Vorteil besteht darin, dass es die Client-Implementierung vereinfacht und die Codekomplexität und Wartungskosten reduziert.
    • Der Nachteil besteht darin, dass die Systemlatenz und die Fehlerquellen steigen, da alle Anfragen über den Server weitergeleitet werden müssen.

5. Vorteile des Service-Discovery-Mechanismus

  • Reduzieren Sie die Kopplung zwischen Diensten

    • Microservices müssen die Netzwerkadressen der anderen nicht direkt kennen, sie müssen lediglich über das Service-Registrierungscenter kommunizieren.
  • Verbessern Sie die Skalierbarkeit und Flexibilität des Systems

    • Da sich Dienste dynamisch ändern (z. B. Erweiterung, Reduzierung, Migration usw.), kann das Dienstregistrierungszentrum die Informationen zu Dienstinstanzen in Echtzeit aktualisieren, um sicherzustellen, dass die Kommunikation zwischen Diensten nicht beeinträchtigt wird.
  • Unterstützt Lastausgleich und Failover

    • Der Client kann die Adressliste mehrerer Dienstinstanzen vom Dienstregistrierungszentrum erhalten und eine davon für die Kommunikation basierend auf der Lastausgleichsrichtlinie auswählen. Wenn eine Dienstinstanz nicht verfügbar ist, kann die Dienstregistrierung sie automatisch als fehlerhaft markieren und das Senden von Anfragen an sie vermeiden.

6. Gemeinsame Service-Erkennungstools

  • Eureka

    • Ein von Netflix entwickeltes Service-Discovery-Tool, das den Client-Discovery-Modus verwendet. Es ist sehr leicht und einfach zu integrieren und zu verwenden.
  • Konsul

    • Von HashiCorp entwickeltes Service-Erkennungs- und Konfigurationscenter-Tool. Es bietet eine relativ vollständige Lösung einschließlich Dienstzustandsprüfung und anderen Funktionen und unterstützt HTTP- und DNS-Protokolle.
  • Tierpfleger

    • Apache ZooKeeper ist ein verteilter Open-Source-Koordinierungsdienst, der auch zur Diensterkennung verwendet werden kann. Es bietet verteilte Sperren, Namensdienste und andere Funktionen und unterstützt eine Vielzahl von Client-Bibliotheken.

In der Microservice-Architektur realisiert der Service-Discovery-Mechanismus die dynamischen Registrierungs- und Abfragefunktionen von Serviceinstanzen über das Registrierungszentrum, wodurch die Kopplung zwischen Services reduziert und die Skalierbarkeit und Flexibilität des Systems verbessert wird.