Warum sollten Sie Apache APISIX anstelle von NGINX oder Kong wählen?

API7.ai

July 30, 2022

Products

API-Gateway ist eine wichtige Infrastrukturkomponente im Cloud-Native-Zeitalter. Es gibt zwei gängige Kriterien, um ein API-Gateway zu bewerten: wie dynamisch es ist und wie ausgereift seine Beobachtbarkeit ist. Viele Unternehmen verwendeten früher Nginx oder Kong als ihr API-Gateway, sind dann aber später zu Apache APISIX gewechselt. Als ein API-Gateway, das für das Cloud-Native-Zeitalter geboren wurde, löst Apache APISIX tatsächlich viele Schmerzpunkte für Unternehmen in verschiedenen Dimensionen. Nun fragen Sie sich vielleicht, warum?

Einschränkungen von NGINX und Kong

Im Zeitalter der monolithischen Dienste kann NGINX die meisten Szenarien abdecken. Im Cloud-Native-Zeitalter hat NGINX jedoch aufgrund seiner Architektur zwei Schwächen:

  • NGINX unterstützt kein Clustermanagement. Fast jedes Unternehmen hat sein eigenes NGINX-Konfigurationsmanagementsystem. Obwohl die Systeme ähnlich sind, gibt es keine einheitliche Lösung.
  • NGINX unterstützt kein Hot-Reloading von Konfigurationen. Wenn der Benutzer die Konfiguration von NGINX ändert, muss NGINX neu geladen werden. Außerdem ändern sich die Dienste in Kubernetes häufig. Wenn NGINX also verwendet wird, um den Datenverkehr zu handhaben, muss der Dienst oft neu gestartet werden, was für Unternehmen inakzeptabel ist.

Kong löst die Schwächen von NGINX, bringt aber neue Einschränkungen mit sich:

  • Kong benötigt eine PostgreSQL- oder Cassandra-Datenbank, was die gesamte Architektur von Kong sehr aufgebläht macht und eine Hochverfügbarkeitseinschränkung für das Unternehmen mit sich bringt. Wenn die Datenbank ausfällt, fällt das gesamte API-Gateway aus.
  • Das Routing von Kong verwendet eine Traversalsuche. Wenn es mehr als tausend Routen im Gateway gibt, sinkt die Leistung dramatisch.

APISIX löst alle oben genannten Einschränkungen und wird zum besten API-Gateway im Cloud-Native-Zeitalter.

Vorteile von Apache APISIX

Gut durchdachte Architektur

Zunächst hat Apache APISIX eine hervorragende Architektur. Cloud-Native, als aktueller Technologietrend, wird die technische Architektur traditioneller Unternehmen verändern. Viele Anwendungen migrieren zu Microservices und Containerisierung. APISIX hat seit seiner Entstehung den Technologietrend verfolgt:

image

Wie in der obigen Abbildung gezeigt, sind links und rechts die Data Plane und die Control Plane von APISIX:

  • Data Plane: Basierend auf der Netzwerkbibliothek von NGINX (ohne Verwendung des NGINX-Routings, der statischen Konfiguration und der C-Module) verwendet es Lua und NGINX, um den Anfragedatenverkehr dynamisch zu steuern;
  • Control Plane: Administratoren können etcd über die integrierte RESTful API steuern. Mit Hilfe des Watch-Mechanismus von etcd kann APISIX die Konfiguration innerhalb von Millisekunden auf jeden Knoten synchronisieren.

Für die Aktualisierung von Daten verwendet Kong die Datenbank-Polling-Methode; es kann 5-10 Sekunden dauern, um die neueste Konfiguration zu erhalten, während APISIX dies durch die Überwachung von etcd-Konfigurationsänderungen erreicht, was die Zeit in Millisekunden kontrollieren kann.

Da sowohl APISIX als auch etcd die Bereitstellung mehrerer Instanzen unterstützen, gibt es keinen Single Point of Failure.

Reichhaltiges Ökosystem

Die folgende Abbildung zeigt das Ökosystem von APISIX. Aus dieser Abbildung können wir ersehen, dass APISIX L7-Protokolle wie HTTP(S), HTTP2, Dubbo, das IoT-Protokoll MQTT usw. unterstützt. Darüber hinaus unterstützt APISIX L4-Protokolle wie TCP/UDP.

Der rechte Teil der Abbildung enthält einige Open-Source- oder SaaS-Dienste wie Apache SkyWalking, Prometheus, HashiCorp Vault usw. Am unteren Rand der Abbildung befinden sich die gängigeren Betriebssystemumgebungen, Cloud-Anbieter und Hardware-Umgebungen. Als Open-Source-Software kann APISIX auch auf ARM64-Servern ausgeführt werden.

image

APISIX unterstützt nicht nur viele Protokolle und Betriebssysteme, sondern auch Multi-Sprach-Programmier-Plugins. Als es erstmals herauskam, unterstützte APISIX nur die Verwendung der Lua-Sprache zum Schreiben von Plugins. In diesem Fall müssen Entwickler den Technologie-Stack rund um Lua und NGINX beherrschen. Lua und NGINX sind jedoch relativ Nischen-Technologien, die nur wenigen Entwicklern vertraut sind. Daher haben wir dann die Plugin-Entwicklung auf APISIX mit mehreren Sprachen ermöglicht und offiziell Sprachen wie Java, Golang, Node.js und Python unterstützt.

image

Aktive Community

Die folgende Abbildung zeigt die Wachstumskurve der Mitwirkenden, wobei die horizontale Achse den Zeitverlauf und die vertikale Achse die Gesamtzahl der Mitwirkenden darstellt. Wir können sehen, dass die beiden Projekte, Apache APISIX und Kong, relativ aktiver sind. Apache APISIX hat vom ersten Tag an eine hervorragende Wachstumsrate beibehalten und wächst mit einer Rate, die fast doppelt so hoch ist wie die von Kong. Bis Juli 2022 hat die Anzahl der Mitwirkenden an APISIX die von Kong übertroffen, was die Beliebtheit von APISIX zeigt. Natürlich gibt es viele andere Möglichkeiten, die Aktivität eines Projekts zu bewerten, wie z.B. die monatlich aktiven Issues, die Gesamtzahl der PRs usw. Die gute Nachricht ist, dass APISIX auch in diesen Aspekten unübertroffen ist.

image

Einheitliche Proxy-Infrastruktur

Aus der folgenden Abbildung können Sie bereits das Ziel von APISIX verstehen: die Vereinheitlichung der Proxy-Infrastruktur.

image

Da der Kern von APISIX ein hochleistungsfähiger Proxy-Dienst ist, bindet er keine Umgebungseigenschaften. Daher müssen Sie, wenn es sich zu Produkten wie Ingress und Service Mesh entwickelt, die interne Struktur von APISIX nicht ändern. Im Folgenden wird Ihnen Schritt für Schritt erklärt, wie APISIX diese Szenarien unterstützt.

Lastausgleich und API-Gateway

Zunächst für traditionelle LB- und API-Gateway-Szenarien. Da APISIX auf NGINX + LuaJIT basiert, verfügt es über Hochleistungs- und Sicherheitsfunktionen und unterstützt das dynamische Laden eines SSL-Zertifikats, SSL-Handshake-Optimierung und andere Funktionen. Beim Lastausgleich schneidet APISIX ebenfalls besser ab. Der Wechsel von NGINX zu APISIX führt nicht zu einer Leistungsverschlechterung, sondern verbessert die Managementeffizienz durch Funktionen wie einheitliches Management.

Microservice-Gateway

APISIX ermöglicht es Ihnen, Erweiterungs-Plugins in mehreren Sprachen zu schreiben, was das Hauptproblem von Ost-West-Microservice-API-Gateways lösen kann - wie man in heterogenen Umgebungen einheitlich verwaltet. APISIX unterstützt auch Service Discovery wie Nacos, etcd und Eureka sowie standardmäßige DNS-Methoden, wodurch Microservice-API-Gateways wie Zuul, Spring Cloud Gateway und Dubbo vollständig ersetzt werden können.

Kubernetes Ingress

Derzeit wird das offizielle Kubernetes Ingress Controller-Projekt von K8s hauptsächlich auf der Basis der NGINX-Konfigurationsdatei entwickelt, daher ist es in der Routing-Fähigkeit und im Lademodus etwas unzureichend und hat einige offensichtliche Einschränkungen. Zum Beispiel muss der Dienst neu gestartet werden, um die Aktualisierung der neuen NGINX-Konfiguration abzuschließen, wenn eine API hinzugefügt oder geändert wird. Das Neustarten des Dienstes hat einen großen Einfluss auf den Online-Datenverkehr.

Der APISIX Ingress Controller löst alle oben genannten Einschränkungen perfekt: er unterstützt vollständiges Hot-Reloading. Gleichzeitig erbt er alle Vorteile von APISIX und unterstützt auch native Kubernetes CRD, was die Migration für Benutzer erleichtert.

image

Service Mesh

In den nächsten fünf bis zehn Jahren wird die Service-Mesh-Architektur, die auf dem Cloud-Native-Modell basiert, aufkommen. APISIX hat bereits begonnen, die Spur vorzeitig zu sichern. Nach umfangreichen Recherchen und technischen Analysen unterstützt APISIX das xDS-Protokoll. APISIX Mesh wurde geboren, und APISIX hat auch einen Platz im Bereich des Service Mesh.

image

Zusammenfassung

Es sind drei Jahre vergangen, seit Apache APISIX erstmals Open Source wurde. Die hochaktive Community und die Fallstudien haben bewiesen, dass APISIX das perfekte API-Gateway im Cloud-Native-Zeitalter ist. Durch das Lesen dieses Artikels haben Sie hoffentlich ein umfassenderes Verständnis von APISIX.

Wenn Sie Fragen haben, können Sie eine Nachricht im GitHub-Issue hinterlassen; Community-Mitwirkende werden schnell antworten; natürlich können Sie auch dem APISIX Slack-Kanal und der Mailingliste beitreten; bitte lesen Sie Join Us.

Tags: