API Gateway vs Load Balancer

Beng Chen

March 3, 2023

Technology

Mit der Entwicklung der Internettechnologie hat die Anzahl der Anfragen nach Netzwerkdaten dramatisch zugenommen, was einen größeren Druck auf die Server ausübt. In der Systemarchitektur der frühen Tage wurde typischerweise ein Load Balancer verwendet, um den Netzwerkverkehr auf mehrere Server zu verteilen und somit die Last auf einem einzelnen Server zu reduzieren.

Heutzutage bieten jedoch viele verschiedene Arten von Backend-Diensten APIs nach außen an, was zu einer zunehmenden Anzahl von APIs führt. Dadurch sind die Grenzen der Systemarchitektur, die hauptsächlich auf Load Balancern basiert, deutlich geworden, da diese hauptsächlich auf Ebene 4 arbeiten und nur begrenzte Funktionen auf Ebene 7 bieten. Dies hat zur Entstehung einer Infrastruktur namens API Gateway geführt, die hauptsächlich auf Ebene 7 arbeitet und umfangreiche Erweiterungsmöglichkeiten bietet.

In diesem Artikel werden wir die besonderen Merkmale von Load Balancern und API Gateways vorstellen und ihre Unterschiede untersuchen, um den Lesern ein besseres Verständnis ihrer Beziehung zu vermitteln.

Was ist ein Load Balancer?

was ist ein Load Balancer

Die Hauptaufgabe eines Load Balancers besteht darin, Lastverteilungsfunktionen für mehrere Backend-Dienste bereitzustellen, sodass sie den Verkehr basierend auf verschiedenen Lastverteilungsalgorithmen verteilen können. Die Geschichte der Load Balancer ist umfangreich und kann grob in die folgenden Phasen unterteilt werden:

  • Erste Phase: Load Balancer in dieser Phase bestehen typischerweise aus Hardwaregeräten, die eine hohe Leistung und hohe Zuverlässigkeit bieten, aber unflexibel und teuer sind.

  • Zweite Phase: Load Balancer begannen, in Software implementiert zu werden, was flexibler und skalierbarer ist und oft in Software-Distributionen auftaucht, wodurch sie weniger kostspielig sind. LVS (Linux Virtual Server) ist ein Beispiel für diesen Typ.

  • Dritte Phase: Mit dem Aufstieg der Cloud-Computing-Technologie begannen auch Load Balancer, Cloud-Versionen zu haben. Ein wesentlicher Vorteil eines solchen Load Balancers ist, dass er Unternehmen helfen kann, hochleistungsfähige Lastverteilungsdienste zu geringeren Kosten zu erhalten. Ein weiterer Vorteil ist, dass er die Skalierbarkeit und Elastizität des Cloud Computing nutzen kann, um die Gesamtverfügbarkeit zu verbessern. Beispiele für Cloud-Load-Balancer sind AWS's Classic Load Balancer, Application Load Balancer und Network Load Balancer.

Neben der Verteilung des Verkehrs und der Verbesserung der Netzwerkskalierbarkeit können Load Balancer auch zur Verbesserung der Netzwerksicherheit verwendet werden. Zum Beispiel können sie verwendet werden, um interne Server vom öffentlichen Internet zu isolieren, um böswillige Angriffe und unbefugten Zugriff zu verhindern. Ein einfacher Anwendungsfall ist ein interner Server, der sensible Informationen enthält, den ein Load Balancer innerhalb des internen Netzwerks isolieren kann, um seine Sicherheit effektiv zu schützen.

Was ist ein API Gateway?

was ist ein API Gateway

Kurz gesagt ist ein API Gateway eine Infrastruktur, die API-Verkehr verwaltet und weiterleitet und hauptsächlich auf Ebene 7 arbeitet. Es bietet eine robuste Skalierbarkeit, die Load Balancer nicht haben, einschließlich Authentifizierung, Beobachtbarkeit und benutzerdefinierte Plugins. Einige seiner Schlüsselfunktionen sind:

  • Reichhaltige Routing-Strategien: Da das API Gateway auf Ebene 7 arbeitet, kann es Daten auf der HTTP/HTTPS-Ebene analysieren. Daher kann es Anfragen basierend auf Bedingungen wie dem Anfragepfad, der Domain oder dem Header an verschiedene Upstream-Server weiterleiten.

  • Authentifizierung: API Gateway unterstützt mehrere Authentifizierungsmethoden auf API-Ebene, um unbefugte Anfragen zu verhindern, wie z.B. OAuth2 und JWT. Die Authentifizierung kann von der Geschäftslogik getrennt und unabhängig gehalten werden, um nicht-invasiv oder minimal-invasiv für den Geschäftscode zu sein.

  • Ratenbegrenzung: Fein abgestufte Ratenbegrenzung kann auf verschiedenen Routing-Ebenen angewendet werden, um böswillige Angriffe zu verhindern und eine Überlastung der Backend-Dienste zu vermeiden.

  • Beobachtbarkeit: Beobachtbarkeit bezieht sich auf die Fähigkeit, den Betriebszustand und die Ressourcennutzung des internen Programms von außerhalb des Systems zu beobachten. API Gateway unterstützt die Verknüpfung von Protokollen mit Kafka, Google Cloud Logging Service, Elasticsearch usw. und die Verknüpfung relevanter Metriken mit Prometheus, Datadog usw.

  • Erweiterung: Da das API Gateway selbst ein Gateway ist, ist es so konzipiert, dass es sich an verschiedene Anwendungsszenarien verschiedener Unternehmen anpassen kann, wie z.B. verschiedene Identitätsauthentifizierungen, Canary Release, Sicherheitsrichtlinien und Protokollsammlung. Darüber hinaus muss das API Gateway den Benutzern die Möglichkeit bieten, Erweiterungen auszuwählen oder benutzerdefinierte Entwicklungen durchzuführen; daher ist die Skalierbarkeit stark, und die Auswahl an verfügbaren Erweiterungen ist recht vielfältig. Zum Beispiel hat Apache APISIX 13 verschiedene Authentifizierungserweiterungen, die fast alle gängigen Authentifizierungsanforderungen auf dem Markt abdecken.

Derzeit gibt es viele verschiedene API Gateways auf dem Markt, wie z.B. Apache APISIX, Kong, Tyk, Zuul usw. Entwickler können das am besten geeignete API Gateway entsprechend ihren spezifischen Anforderungen auswählen.

Hauptunterschiede zwischen API Gateway und Load Balancer

Unterschiedliche Schwerpunkte

API Gateway unterschiedlich mit Load Balancer Bild 1

Obwohl sowohl API Gateway als auch Load Balancer Layer-4- und Layer-7-Proxys unterstützen, konzentriert sich das API Gateway hauptsächlich auf Layer 7, während der Load Balancer hauptsächlich auf Layer 4 fokussiert ist.

Daher hat der Load Balancer, der auf Layer 4 arbeitet, viele vorteilhafte Funktionen. Erstens reduziert er den Protokollanalyse-Overhead im Vergleich zum API Gateway, was zu einer höheren Durchsatzfähigkeit führt. Zweitens unterstützt er die transparente Weiterleitung von Client-IP-Adressen, während das API Gateway typischerweise Client-IP-Adressen über HTTP-Header weitergibt.

Reichhaltigkeit der Funktionen

API Gateway unterschiedlich mit Load Balancer Bild 2

Zum Beispiel haben Load Balancer schwächere HTTP-Layer-7-Verarbeitungsfähigkeiten und bieten oft keine Funktionen wie Authentifizierung, Autorisierung, komplexe Routing-Logik und Protokollsammlung. Während API Gateways stärkere Layer-7-Protokollverarbeitungsfähigkeiten haben und verschiedene Funktionserweiterungen wie Zugriffskontrolle, Protokollierung, API-Management und Serverless Computing anbieten können.

Benutzerdefinierte Entwicklung

Im heutigen sich schnell entwickelnden Technologiemarkt benötigen viele Unternehmen die Fähigkeit, benutzerdefinierte Entwicklungen zu unterstützen. API Gateways bieten verschiedene Optionen für benutzerdefinierte Entwicklungen, wie z.B. die Unterstützung verschiedener Programmiersprachen und die Möglichkeit, benutzerdefinierte Verarbeitungslogik in verschiedenen Phasen der Verkehrsweiterleitung einzufügen. Auf der anderen Seite bieten Load Balancer keine Optionen für benutzerdefinierte Entwicklungen.

Verkehrsverteilungsmethoden

Load Balancer verwenden normalerweise direkte Verkehrsverteilung, um Lastenausgleich zu erreichen. Über Algorithmen werden Verkehrsdaten direkt an bestimmte Backend-Serverknoten gesendet, was bedeutet, dass jede Dienstinstanz, die auf den Empfang von Verkehr wartet, konsistent sein muss, was eine gewisse Flexibilität reduziert. Im Gegensatz dazu verteilen API Gateways den Verkehr basierend auf verschiedenen Dimensionen wie URL Path, Domain und Header. Dadurch können die Dienstinstanzen, die auf den Empfang von Verkehr warten, variieren, wie z.B. eine private API oder eine GRPC API, was die Verkehrsverteilung sehr flexibel macht.

Anwendungsfälle

Anwendungsfall von Microservices

im Microservice-Bildschirm

Für Systeme mit Microservice-Architektur ist ein API Gateway unerlässlich. Erstens kann es verschiedene Backend-Dienste einfach verwalten und routen. Zweitens kann ein API Gateway viele erweiterte Funktionen wie Authentifizierung, Autorisierung, Ratenbegrenzung, Weiterleitung und Protokollierung bieten. Daher müssen verschiedene Microservices Funktionen wie Ratenbegrenzung und Authentifizierung nicht mehr wiederholt implementieren, was die Funktionsimplementierung jedes Microservices fokussierter macht und die Entwicklungskosten reduziert.

Microservices-Architektur umfasst viele Dienste, was Layer-4-Load-Balancer für den Lastenausgleich mehrerer Backend-Dienste ungeeignet macht. Stattdessen sind sie besser geeignet, um mit monolithischen Backend-Diensten verwendet zu werden. In der Zwischenzeit können Layer-7-Load-Balancer normalerweise keine erweiterten Funktionen bieten, was ihre Vorteile gegenüber API Gateways in Microservices weniger signifikant macht.

API-Management & -Bereitstellung

API Gateway ist auch in Szenarien sehr geeignet, in denen eine große Anzahl von APIs verwaltet und bereitgestellt werden muss, da es über leistungsstarke API-Management-Fähigkeiten verfügt. In diesem Fall können Sie leicht eine bestimmte API aktivieren oder deaktivieren, die Weiterleitungskonfiguration einer API schnell ändern und Funktionen wie Ratenbegrenzung, Authentifizierung und Protokollierung zu einer API hinzufügen, ohne das API Gateway neu starten zu müssen.

Nehmen wir Apache APISIX als Beispiel, es ist ein Top-Level-Open-Source-Projekt unter der Apache Foundation und derzeit das aktivste Open-Source-Gateway-Projekt. Als dynamisches, Echtzeit- und leistungsstarkes Open-Source-API-Gateway bietet Apache APISIX verschiedene Verkehrsmanagementfunktionen wie Lastenausgleich, dynamisches Upstream, Canary Release, Circuit Breaker, Identitätsauthentifizierung, Beobachtbarkeit usw.

apisix dashboard screenshot Bild 1

apisix dashboard screenshot Bild 12

Auf der anderen Seite sind traditionelle Load Balancer in Bezug auf das API-Management relativ schwächer und benötigen solche reichhaltigen erweiterten Funktionen.

Hochleistungsfähiger Netzwerkzugriff

Für Szenarien, die hohen Verkehr und extrem hohe Stabilität für den Netzwerkzugriff erfordern, ist ein Layer-4-Load-Balancer offensichtlich besser geeignet. Er kann den ursprünglichen Layer-4-Verkehr des Netzwerks direkt an jeden Backend-Dienst verteilen, ohne den Einfluss mehrfacher Analysen von Anwendungsschichtprotokollen in den Zwischenschichten, was ihn besser in der Lage macht, höheren Durchsatz zu bewältigen.

Im Gegensatz dazu hat das API Gateway, das auf Layer 7 arbeitet, als einheitlicher Einstiegspunkt eine gewisse Durchsatzgrenze aufgrund der Notwendigkeit, Protokolle zu analysieren. Selbst wenn ein Layer-4-API-Gateway für den Netzwerkzugriff verwendet wird, ist dies nicht besonders vorteilhaft, da diese Ebene nicht der Schwerpunkt des API Gateways ist. Im Vergleich zu den vielen Jahren technischer Akkumulation von Load Balancern auf dieser Ebene sind die Vorteile von API Gateways weit weniger signifikant.

Zusammenfassung

Im Allgemeinen sind API Gateway und Load Balancer Infrastrukturlösungen, die verwendet werden, um verschiedene Probleme zu lösen. API Gateway wird hauptsächlich als Proxy für Backend-API-Schnittstellen verwendet, bietet einen einzigen Einstiegspunkt für den Zugriff auf verschiedene Arten von APIs und unabhängige Funktionen wie Ratenbegrenzung, Authentifizierung und Überwachung. Auf der anderen Seite wird ein Load Balancer hauptsächlich für die Layer-4-Verkehrsverteilung verwendet, um Anfragen auf mehrere Backend-Server zu verteilen, um die Anfragelast auszugleichen und die Gesamtverfügbarkeit und Fehlertoleranz des Systems zu verbessern.

Unter einer vernünftigen Architekturdesign werden API Gateway und Load Balancer in der Regel zusammen verwendet. Ein Load Balancer ist der Netzwerkzugriff für das gesamte System, der den Verkehr auf mehrere API-Gateway-Instanzen verteilt. Jede API-Gateway-Instanz routet, authentifiziert und autorisiert dann Anfragen separat, um das gesamte Netzwerk robuster, zuverlässiger und skalierbarer zu machen.

Tags: