Warum benötigen Microservices einen API Gateway?

Xiaolan Cheng

February 17, 2023

Ecosystem

Was sind Microservices?

Die Microservice-Architektur, oft auch als Microservices bezeichnet, ist eine Art von Architektur, die zur Entwicklung von Anwendungen verwendet wird. Mit Microservices können große Anwendungen in mehrere unabhängige Komponenten aufgeteilt werden, von denen jede ihre eigenen Verantwortlichkeiten hat. Bei der Verarbeitung einer Benutzeranfrage kann eine auf Microservices basierende Anwendung viele interne Microservices aufrufen, um gemeinsam eine Antwort zu generieren. Microservices sind ein Ergebnis der Internetentwicklung, und das rasante Wachstum des Internets hat dazu geführt, dass sich die Architektur von Systemen ständig verändert.

Insgesamt hat sich die Architektur von Systemen grob von der monolithischen Architektur über die SOA-Architektur zur Microservice-Architektur entwickelt. Die spezifische Entwicklung sowie die Vor- und Nachteile jeder Architektur sind in der folgenden Tabelle dargestellt.

ArchitekturtypBeschreibungVorteileNachteile
Monolithische AnwendungsarchitekturDer gesamte Funktionscode wird in einen einzigen Dienst gepackt.1. Einfache Architektur mit niedrigen Projektentwicklungs- und -wartungskosten.Die Kopplung aller Module ist vorteilhaft für die Entwicklung und Wartung kleiner Projekte, kann jedoch bei großen Projekten Probleme verursachen, einschließlich
1. Die Module im Projekt sind zu eng gekoppelt, und ein Leistungsproblem in einem Modul kann dazu führen, dass das gesamte Projekt nicht mehr verfügbar ist;
2. Das Projekt benötigt eine bessere Skalierbarkeit.
SOA-ArchitekturDer Begriff steht für "serviceorientierte Architektur", die typischerweise mehrere Dienste umfasst.
Ein Dienst existiert in der Regel unabhängig in einem Betriebssystemprozess, und die Kommunikation zwischen Diensten erfolgt über Abhängigkeiten oder Kommunikationsmechanismen,
Letztendlich bietet sie eine Reihe von Funktionen.
1. Systemintegration: Aus systemischer Sicht löst sie Kommunikationsprobleme zwischen Unternehmenssystemen, indem sie deren bisher ungeordnete und unstrukturierte Netzwerkverbindungen in eine verwaltete und strukturierte Sternkonfiguration umwandelt.
2. Serviceorientiertes System: Aus funktionaler Sicht abstrahiert sie die Geschäftslogik in wiederverwendbare und kombinierbare Dienste und verwendet Dienstorchestrierung, um die schnelle Rekonstruktion von Geschäftsprozessen zu erreichen.
3. Geschäftsdienstorientiert: Aus Unternehmenssicht abstrahiert sie Unternehmensfunktionen in wiederverwendbare und kombinierbare Dienste.
1. Die Zentralisierung von Diensten schafft Abhängigkeiten zwischen Diensten, und ein Ausfall eines Dienstes kann einen kaskadierenden Ausfall anderer Dienste auslösen.
2. Die Abhängigkeiten und Aufrufbeziehungen zwischen Diensten sind komplex, was Tests und Bereitstellungen erschwert.
Microservice-ArchitekturMicroservices sind die Weiterentwicklung von SOA. Einer der Schwerpunkte der Microservices-Architektur ist "die Notwendigkeit, das Geschäft gründlich zu komponentisieren und zu servicifizieren",
Das ursprüngliche einzelne Geschäftssystem wird in mehrere Teile aufgeteilt, die unabhängig entwickelt, entworfen und bereitgestellt werden können.
Diese Teile werden als kleine, unabhängige Anwendungen ausgeführt. Jede Anwendung wird mit den anderen zusammenarbeiten und kommunizieren, um Integration und Interaktivität zu erreichen, was das Wesen einer Microservices-Architektur ausmacht.
1. Dezentralisierung;
2. Komponentisierung durch Dienste;
3. Aufteilung von Diensten und Entwicklungsteams basierend auf Geschäftsfähigkeiten;
4. Automatisierung der Infrastruktur (DevOps, automatisierte Bereitstellung).
1. Die Entwicklungskosten sind relativ hoch;
2. Verursacht Fehlertoleranzprobleme für Dienste;
3. Verursacht Datenkonsistenzprobleme;
4. Beinhaltet verteilte Transaktionen

Daher sind Microservices ein unvermeidliches Ergebnis der Internetentwicklung, und die Systemarchitektur vieler traditioneller Unternehmen wird zunehmend microserviceorientiert.

Mit der Entwicklung des Internetgeschäfts nimmt jedoch auch die Anzahl der APIs dramatisch zu, und Gateways für die einheitliche API-Verwaltung werden ebenfalls vor Herausforderungen gestellt. Die Wahl eines robusteren API-Gateways kann die Fähigkeiten des Systems in Bezug auf Überwachung, Notfallwiederherstellung, Authentifizierung und Ratenbegrenzung effektiv verbessern.

Was ist ein API-Gateway?

Ein API-Gateway bietet eine einheitliche Schnittstelle für die Interaktion zwischen Clients und Dienstsystemen und dient als zentraler Punkt für die Verwaltung von Anfragen und Antworten. Die Wahl eines geeigneten API-Gateways kann die Entwicklung vereinfachen und die Effizienz des Systembetriebs und der -verwaltung verbessern.

In einer Microservices-Architektur dient ein API-Gateway als Lösung für das Systemdesign, indem es verschiedene Microservices aus verschiedenen Modulen integriert und Dienste einheitlich koordiniert.

Als Systemzugangsaspekt bietet das API-Gateway einen einheitlichen Einstiegspunkt für Clients, verbirgt die Implementierungsdetails der Systemarchitektur und macht Microservices benutzerfreundlicher. Es integriert auch einige gängige Funktionen wie Authentifizierung, Ratenbegrenzung und Circuit Breaking, um die individuelle Entwicklung jedes Microservices zu vermeiden, die Effizienz zu steigern und das System zu standardisieren, wie z.B. Identitätsauthentifizierung, Überwachung, Lastausgleich, Ratenbegrenzung, Degradierung und Anwendungserkennung.

Warum benötigen Microservices ein API-Gateway?

API-Gateway in Microservices

Wie im obigen Diagramm gezeigt, dient das API-Gateway als Zwischenschicht zwischen dem Client und den Microservices. Es kann Microservices unter einer einheitlichen Adresse nach außen bereitstellen und den Datenverkehr basierend auf geeigneten Regeln an die richtigen Dienstknoten innerhalb des internen Clusters weiterleiten.

Ohne ein API-Gateway sind die Ein- und Ausgänge des Datenverkehrs nicht einheitlich, und der Client muss die Zugriffsinformationen aller Dienste kennen. Die Bedeutung von Microservices würde nicht bestehen. Daher ist ein Microservices-Gateway für eine Microservice-Architektur notwendig. Darüber hinaus spielt das API-Gateway eine entscheidende Rolle bei der Systembeobachtbarkeit, Identitätsauthentifizierung, Stabilität und Dienstentdeckung.

Herausforderungen für Microservices

Das Microservices-Gateway sollte zunächst API-Routing-Fähigkeiten haben. Mit der Zunahme der Anzahl von Microservices steigt auch die Anzahl der APIs. Das Gateway kann auch als Datenverkehrsfilter in bestimmten Szenarien verwendet werden, um bestimmte optionale Funktionen bereitzustellen. Daher werden höhere Anforderungen an das Microservices-API-Gateway gestellt, wie z.B.:

  • Beobachtbarkeit: In der Vergangenheit wurde die Fehlerbehebung in monolithischen Anwendungen oft durch die Überprüfung von Protokollen auf Fehlermeldungen und Ausnahmestapel durchgeführt. In einer Microservices-Architektur mit vielen Diensten wird die Problemdiagnose jedoch sehr schwierig. Daher stellt die Überwachung des Betriebs von Microservices und die Bereitstellung schneller Warnungen bei Anomalien eine große Herausforderung für Entwickler dar.
  • Authentifizierung und Autorisierung: In einer Microservices-Architektur wird eine Anwendung in mehrere Microanwendungen aufgeteilt, die den Zugriff authentifizieren und den aktuellen Benutzer und dessen Berechtigungen kennen müssen. Die Authentifizierungsmethode in der monolithischen Anwendungsarchitektur ist ungeeignet, insbesondere wenn der Zugriff nicht nur von einem Browser, sondern auch von anderen Dienstaufrufen erfolgt. In einer Microservices-Architektur müssen verschiedene Authentifizierungsszenarien berücksichtigt werden, einschließlich des Zugriffs externer Anwendungen, der Benutzer-Dienst-Authentifizierung und der Dienst-Dienst-Authentifizierung.
  • Systemstabilität: Wenn die Anzahl der Anfragen die Verarbeitungskapazität eines Microservices übersteigt, kann dies den Dienst überlasten und sogar einen Kaskadeneffekt auslösen, der die Gesamtstabilität des Systems beeinträchtigt.
  • Dienstentdeckung: Die dezentrale Verwaltung von Microservices stellt auch Herausforderungen für die Implementierung von Lastausgleich dar.

Lösungen

Das API-Gateway, als die Zwischenbrücke zwischen Client und Server, bietet einen einheitlichen Verwaltungsmechanismus für das Microservices-System. Neben grundlegenden Funktionen wie Anfrageverteilung, API-Verwaltung und bedingungsbasiertem Routing umfasst es auch Identitätsauthentifizierung, Überwachung und Alarmierung, Tracing-Analyse, Lastausgleich, Ratenbegrenzung, Isolation und Circuit Breaking.

Identitätsauthentifizierung: Das folgende Diagramm zeigt, wie Microservices mit einem API-Gateway für die Identitätsauthentifizierung vereint werden, wobei alle Anfragen über das Gateway gehen und die Microservices effektiv verborgen werden.

API-Gateway-Authentifizierung in Microservices

Überwachung und Alarmierung/Tracing-Analyse:

Als Vermittler zwischen Client und Server ist das API-Gateway ein hervorragender Träger für die Überwachung von Microservices.

Die Hauptaufgabe der Überwachungsfunktion des API-Gateways besteht darin, Verbindungsanomalien zwischen dem Gateway und den Backend-Servern rechtzeitig zu erkennen. Benutzer können Protokollinformationen, Überwachungsinformationen, Tracing usw. auf der Überwachungsplattform für die API einsehen. Darüber hinaus werden alle Anomalien, die auf dem Host auftreten, automatisch an das Kontrollpanel gemeldet. Bestimmte Gateways können sowohl den Client als auch den Server doppelt alarmieren.

Überwachungs- und Tracing-Analyse-Diagramm

Ratenbegrenzung, Isolation und Circuit Breaking:

Mit der zunehmenden Größe des Internetgeschäfts steigt auch die Parallelität der Systeme. Mehrere Dienste rufen sich oft gegenseitig auf, und ein Kernlink kann bis zu zehn Dienste aufrufen. Wenn die RT (Antwortzeit) eines bestimmten Dienstes stark ansteigt und die vorgelagerten Dienste weiterhin Anfragen stellen, entsteht ein Teufelskreis. Je mehr vorgelagerte Dienste auf Ergebnisse warten, desto mehr vorgelagerte Dienste werden blockiert, und der gesamte Prozess wird schließlich unbrauchbar, was zu einem Dienstlawineneffekt führt.

Daher ist es notwendig, den eingehenden Datenverkehr zu regulieren und zu verwalten. Das folgende Diagramm zeigt, wie Microservice-Systeme API-Gateways kombinieren, um Ratenbegrenzung, Isolation und Circuit Breaking durchzuführen.

Ratenbegrenzung, Isolation und Circuit Breaking

Auswahl der gängigen Gateways

In Microservices sind viele Open-Source-Gateway-Implementierungen verfügbar, darunter NGINX, Kong, Apache APISIX und Envoy. Für den Java-Technologie-Stack gibt es Optionen wie Netflix Zuul, Spring Cloud Gateway, Soul usw. Aber Sie fragen sich vielleicht: "Warum würden Sie Apache APISIX statt NGINX und Kong wählen?"

Hier ist ein kurzer Vergleich.

GatewaySchmerzpunkteVorteile
NGINX1. Für Änderungen in der Konfiguration ist ein Neuladen erforderlich, was mit dem Fortschritt der Cloud-Native-Technologien nicht Schritt halten kann.1. Altbewährte Anwendungen;
2. Stabil, zuverlässig und zeitgetestet;
3. Hohe Leistung
Apache APISIX1. Die Dokumentation ist nicht reichhaltig oder klar genug und muss verbessert werden.1. Apache Foundation Top-Level-Projekt;
2. Die technische Architektur entspricht eher den Cloud-Native-Prinzipien;
3. Hervorragende Leistung;
4. Reichhaltiges Ökosystem;
5. Neben der Unterstützung von Lua-Entwicklungsplugins unterstützt es auch Sprachplugins für Java, Go, Python, Node und andere.
Kong1. Die standardmäßige Verwendung von PostgreSQL- oder Cassandra-Datenbanken macht die gesamte Architektur sehr aufgebläht und kann Probleme mit hoher Verfügbarkeit verursachen;
2. Das Routing verwendet einen Traversalsuchalgorithmus, was zu einem erheblichen Leistungsabfall führen kann, wenn es mehr als tausend Routen im Gateway gibt;
3. Einige wichtige Funktionen sind kostenpflichtig;
1. Der Pionier der Open-Source-API-Gateways mit einer großen Benutzerbasis;
2. Die Leistung erfüllt die Anforderungen der meisten Benutzer;
3. Reichhaltiges Ökosystem;
4. Es unterstützt Lua- und Go-Plugin-Entwicklung;
Envoy1. Es ist in C++ entwickelt, was die Weiterentwicklung erschwert;
2. Neben der Entwicklung von Filtern in C++ unterstützt es auch WASM und Lua.
1. Das CNCF-Projekt ist eher für Service-Mesh-Szenarien geeignet und unterstützt die Bereitstellung von Mehrsprachenarchitekturen;
Spring Cloud Gateway1. Obwohl die Spring-Community reif ist, gibt es einen Mangel an Ressourcen für das Gateway.1. Das Gateway bietet eine Fülle von out-of-the-box-Funktionen, die über SpringBoot-Konfiguration oder handcodierte Aufrufe genutzt werden können;
2. Das Spring-Framework ist hochgradig erweiterbar mit starker Skalierbarkeit, einfacher Konfiguration und guter Wartbarkeit;
3. Die Spring-Community ist reif;
4. Einfach zu verwenden;
5. Bequem für den Java-Technologie-Stack.

Zusammenfassung

Da sich die Internetwelt weiterentwickelt, entwickeln sich Unternehmen schnell weiter, was zu ständigen Veränderungen in der Systemarchitektur führt. Die Microservices-Architektur wurde von vielen Unternehmen weitgehend übernommen.

Da die Daten- und API-Menge von Microservices zunimmt, ist es entscheidend, ein hervorragendes API-Gateway für die Verwaltung von hohem Datenverkehr zu wählen.

Dieser Artikel vergleicht gängige API-Gateways und hebt deren jeweilige Vor- und Nachteile hervor. Angenommen, Sie befinden sich in der Phase der Auswahl einer API-Gateway-Technologie, stoßen auf Leistungsprobleme in Ihrem Microservice-System oder möchten ein effizientes und stabiles Microservice-System aufbauen. In diesem Fall soll Ihnen dieser Artikel einige hilfreiche Einblicke bieten.

Tags: