Alternative to NGINX That Makes Your Life Easier: Apache APISIX
September 15, 2022
API ist ein wesentlicher Bestandteil der digitalen Welt, und das API-Gateway trägt die große Verantwortung, dessen Sicherheit und Stabilität als erste Barriere zu schützen. Viele Softwareingenieure und Teams haben zuvor NGINX verwendet, waren jedoch von den Engpässen und Einschränkungen von NGINX genervt. Gibt es eine bessere Alternative?
Eine großartige Alternative zu NGINX ist Apache APISIX, aber was ist Apache APISIX?
Was ist Apache APISIX?
Apache APISIX ist ein hochleistungsfähiges, dynamisches, vollständiges Traffic-API-Gateway. Die vier bemerkenswerten Merkmale von Apache APISIX:
- Die Apache-Eigenschaft: APISIX ist Open Source und auch ein Top-Level-Projekt der Apache Software Foundation. Es ist unmöglich, die Open-Source-Lizenz unterwegs zu ändern, wie es ElasticSearch und MongoDB getan haben. Da APISIX der Apache Software Foundation (ASF) gehört, ist es kein Projekt eines Unternehmens oder einer Einzelperson mehr.
- Hohe Leistung: APISIX basiert auf OpenResty (einer NGINX-Distribution), daher erbt APISIX auch die Leistungsfähigkeit von NGINX selbst.
- Dynamisch: Wenn NGINX eine robuste Architektur bereitstellt, fügt OpenResty NGINX durch die Verwendung von Lua zur Steuerung des Verhaltens von NGINX mehr Möglichkeiten hinzu. Und APISIX wird mit seiner Flexibilität und starken Verbindung zu anderen Systemen zu einem vollständig dynamischen API-Gateway.
- Echtzeit: APISIX speichert die Konfiguration in etcd. Dieser Vorteil besteht darin, dass Konfigurationsänderungen in Echtzeit über die etcd RESTful API überwacht und abgerufen werden können, da etcd selbst eine verteilte KV-Datenbank ist, die auch von Kubernetes zur Speicherung der Konfiguration verwendet wird. NGINX verwendet statische Dateien zur Speicherung der Konfiguration, und wenn die Konfiguration aktualisiert wird, dauert das Neuladen von NGINX sehr lange.
Apache APISIX vs NGINX
Da wir erwähnt haben, dass APISIX auf NGINX basiert, fragen Sie sich vielleicht: Was ist der Unterschied zwischen APISIX und NGINX?
Zunächst ist zu beachten, dass der Vergleich zwischen APISIX und NGINX kein direkter Vergleich ist. Schließlich ist NGINX ein leichtgewichtiger Proxy, und APISIX konzentriert sich darauf, die Funktionen des Produkts ausgereifter zu machen. Außerdem hat es mehr Funktionen, da APISIX auf NGINX basiert und weiterentwickelt wurde.
Wenn Sie NGINX als Gateway verwenden, werden Ihnen die folgenden beiden Vorteile von APISIX stärker auffallen.
Flexiblere Konfiguration
Im Vergleich zu den Konfigurationsdateien von NGINX bietet APISIX verschiedene Möglichkeiten zur Konfiguration. Zum Beispiel:
- Sie können APISIX über die HTTP-API konfigurieren. Die Konfiguration wird in etcd geschrieben und dann von etcd auf jeden Knoten synchronisiert;
- Sie können dies mit dem APISIX Dashboard tun. Im APISIX Dashboard hilft Ihnen die grafische Visualisierung, die Konfiguration klarer zu gestalten;
- Wenn Sie keine zustandsbehafteten Speichermethoden wie etcd verwenden möchten, können Sie statische Dateien wie K8s verwenden. APISIX unterstützt auch das Abrufen einzelner Konfigurationen aus lokalen YAML-Dateien;
- Wenn Sie APISIX in K8s bereitstellen, können Sie den APISIX Ingress Controller verwenden, um die von CRD ausgegebenen Konfigurationen zu erhalten;
- Wenn Sie APISIX als Datenebene von Istio bereitstellen, können Sie auch die von Istio ausgegebenen Konfigurationen durch die Erkennung von xDS erhalten.
Bessere Erweiterbarkeit
Obwohl NGINX auch NJS eingeführt hat, um eine dynamische Steuerung zu erreichen, ist es nicht so ideal wie die Erweiterbarkeit von APISIX.
Da APISIX mit LuaJIT erweitert werden kann, unterstützt es auch den out-process Plugin Runner, um externe Plugins in Sprachen wie Go, Java, Python, Node.js usw. auszuführen.
Darüber hinaus können Sie ab APISIX 2.11 das Wasm-Plugin ausführen. Mit dieser Funktion können Sie Plugins in APISIX in Rust, TinyGo und anderen Sprachen schreiben und dann in Wasm-Code kompilieren, der auf APISIX ausgeführt wird.
Die Konfiguration von Wasm-Plugins und Lua-Plugins in APISIX zeigt fast keinen funktionalen Unterschied. Dadurch kann eine Leistung ähnlich der nativen Lua-Implementierung erreicht werden und die Entwicklungseffizienz von Hochsprachen genutzt werden.
Was sind die wichtigsten Vorteile von Apache APISIX?
Die oben beschriebenen Vorteile sind ziemlich gut, aber sie sind nicht die entscheidenden Vorteile von APISIX. Der größte Vorteil von APISIX ist sein Ökosystemnetzwerk, das mit vielen Projekten verflochten ist.
- Auf der Authentifizierungsebene unterstützt APISIX Protokolle wie OIDC und LDAP. Gleichzeitig kann es in mehrere Authentifizierungsdienste oder Frameworks integriert werden, wie z.B. Keycloak, Casdoor, Casbin, OPA usw.
- Auf der Beobachtbarkeitsebene unterstützt APISIX die Verbindung mit mehreren Log-Tools wie Clickhouse, Datadog, Splunk, Apache Kafka, Apache RocketMQ usw. Es kann auch reichhaltige Metriken über Prometheus bereitstellen, um mehrere Tracing-Systeme zu unterstützen, wie z.B. OpenTracing, OpenTelemetry und Apache Skywalking.
- Auf der Service-Entdeckungsebene unterstützt APISIX nicht nur das Abrufen von Upstream-Adressen aus Nacos, Eureka, Consul und Zookeeper, sondern auch aus DNS (ob über A/AAAA-Records oder SRV-Records). Darüber hinaus können Sie, wenn Sie APISIX als K8s Ingress Controller verwenden, die entsprechende Konfiguration aus der Ingress-Ressource erhalten (APISIX unterstützt die K8s Gateway API-Spezifikation).
Das aktuelle APISIX befindet sich noch in der Phase der raschen Entwicklung. Im Laufe der Zeit wird APISIX mit immer mehr Projekten integriert, was mehr Möglichkeiten der Zusammenarbeit eröffnet und die Arbeit der Integration in bestehende Systeme erheblich vereinfacht.
Wenn der Dienst, den Sie verbinden möchten, nicht im APISIX-Plugin-Ökosystem enthalten ist, können Sie direkt die vorhandenen Plugins für die benutzerdefinierte Entwicklung verwenden, um Funktionen zu erreichen, die spezifischer für Ihr Geschäft sind.
Welches API-Gateway sollten Sie wählen?
Natürlich müssen Sie, um ein geeignetes Gateway auszuwählen, auch Ihre tatsächliche Geschäftssituation berücksichtigen.
Wenn Sie bereits NGINX als Proxy vor Geschäftsanwendungen verwenden und einige Logiken auf NGINX platziert sind, dann ist APISIX Ihre beste Wahl. Da APISIX auf NGINX basiert, können Sie NGINX basierend auf Ihren Anforderungen reibungslos auf APISIX migrieren.
Wenn Sie noch nie ein Gateway verwendet haben und ein geeignetes Open-Source-API-Gateway-Projekt basierend auf der Situation Ihres Teams auswählen möchten, dann müssen Sie auf die folgenden Aspekte achten:
- Ob die Aktualisierungsfrequenz gut genug ist. Sie können ein gut gepflegtes API-Gateway-Projekt auswählen, indem Sie die Aktivität jedes Projekts beobachten, da niemand ein Projekt auswählen möchte, das bergab geht. Sie können einen Eindruck von der Projektaktivität durch das Contributor Over Time-Diagramm erhalten.
- Ob die Funktionen des Projekts vollständig sind. Wenn das ausgewählte Gateway die aktuellen und zukünftigen Geschäftsanforderungen des Teams nicht erfüllen kann und weil das Projekt zusätzliche Entwicklungsarbeit hinzufügt (wie z.B. Konfigurationsmanagement, Anbindung an interne Dienste), sollten Sie sorgfältig überlegen.
- Ob einige der komplexen technischen Metriken des Projekts gut abschneiden, z.B. ob QPS, Latenz und Speichernutzung die Geschäftsanforderungen erfüllen. Im Allgemeinen ist es schwierig, eine disruptive Optimierung eines Gateways vorzunehmen. Daher wird es schwierig sein, Durchbrüche zu erzielen, wenn ein Gateway diese komplexen Metriken nicht erfüllen kann, egal wie es später iteriert wird.
- Ob es im Team genügend Personal und Zeit gibt, um das API-Gateway zu erlernen und zu pflegen. Schließlich ist die technische Entscheidungsfindung keine rein technische Aktivität.
Natürlich, wenn Sie andere API-Gateways verwendet haben, aber das Gateway die aktuelle Geschäftssituation nicht erfüllen kann, dann können Sie Apache APISIX als eine Ihrer Optionen verwenden.
Wie migriert man von Nginx zu Apache APISIX?
Sie sind klug, wenn Sie dies lesen und beschließen, Ihr bestehendes NGINX durch APISIX zu ersetzen!
Aber bevor Sie migrieren, müssen Sie einige der Produktfunktionen, die Sie haben oder verwenden, auffrischen. Normalerweise können diese Funktionen in drei Kategorien unterteilt werden:
- Direkt ersetzbar. APISIX ermöglicht es Benutzern, NGINX-Konfigurationen direkt zu verwenden, daher können die meisten globalen Konfigurationen von NGINX von APISIX wiederverwendet werden. Was die anwendungsbezogene Konfiguration betrifft, kann sie durch APISIX-Routen ersetzt werden;
- Erfordert Anpassungen, wie z.B. Änderungen in den Metriken;
- Erfordert zusätzliche Entwicklung
Nachdem Sie die erforderliche Entwicklung abgeschlossen haben, würden Sie NGINX schrittweise durch APISIX in tatsächlichen Geschäftsszenarien ersetzen. Während des reibungslosen Migrationsprozesses müssen Sie die folgenden drei Fragen berücksichtigen:
- Wie leitet man Client-Anfragen an APISIX weiter?
- Wie setzt man die entsprechende Konfiguration in APISIX und NGINX um?
- Wie behandelt man sowohl die von APISIX als auch die von NGINX bereitgestellten Metriken?
Sie müssen die oben genannten drei Fragen und Ihre tatsächliche Anwendungsumgebung berücksichtigen. Vergessen Sie schließlich nicht, den "Rollback-Plan für Fehler" im Voraus vorzubereiten.
Durch diesen Artikel glaube ich, dass Sie die Leistungsfähigkeit von Apache APISIX verstanden haben. Lassen Sie uns versuchen, Apache APISIX als Ihr API-Gateway zu verwenden!