Apache APISIX 3.0: 11 Highlights des Open-Source-API-Gateways
Die Open-Source-API-Gateway-Lösung Apache APISIX Version 3.0 steht vor der Tür! Wir haben 11 wesentliche Funktionen ausgewählt, um einen kurzen Überblick zu geben.
API-Gateways sind seit langem ein wesentlicher Bestandteil der IT-Infrastruktur. Sie bieten Funktionen wie Rate Limiting, Authentifizierung (z. B. Keycloak zur Absicherung von APIs) und Observability auf Geschäftsebene.
API-Gateway Apache APISIX
Apache APISIX wurde entwickelt, um Unternehmen bei der Lösung neuer Probleme in Cloud-native-Umgebungen und Microservices zu unterstützen. Beispielsweise ermöglicht es die automatische Skalierung des Geschäftsverkehrs durch die vollständig dynamische Funktion und vereinfacht die Clusterverwaltung durch einmalige Anpassungen.
Daher sind in der Architektur von APISIX die Datenebene (Data Plane) und die Steuerungsebene (Control Plane) getrennt, um vollständige Dynamik und Clusterverwaltung zu erreichen. Dies wird hauptsächlich durch die etcd-Komponente ermöglicht.
APISIX speichert und verwaltet routing- und plugin-bezogene Konfigurationen in etcd. Wie im obigen Diagramm dargestellt, werden die Konfigurationen der Admin API (Control Plane) in etcd gespeichert, während die Datenebene auf der linken Seite hauptsächlich die Änderungen in etcd überwacht. Die Datenebene kann Änderungen schnell erkennen, ohne dass Konfigurationsdateien angepasst werden müssen.
Doch die Lösung dieser Probleme allein reicht nicht aus. Als Middleware, die Anfragen sowohl von Upstream als auch von Downstream erhält, spielt das API-Gateway eine entscheidende Rolle in der Unternehmensarchitektur als Eingangspunkt für den Datenverkehr und als Verbindung zwischen den Dienstschichten. Die Rolle des API-Gateways unterscheidet sich von Datenbanken, die nur Anfragen auf Geschäftsebene erhalten.
Neben geschäftlichen Anforderungen gibt es auch Anforderungen an die Anpassung und Integration von API-Gateways. Daher ist es ein weiteres wichtiges Ziel von APISIX, die Entwicklung von benutzerdefinierten Plugins zu erleichtern und die Einstiegshürde für Entwickler zu senken.
In APISIX werden Plugins hauptsächlich in Lua entwickelt, und LuaJIT (ein Just-In-Time-Compiler für Lua) wird verwendet, um sicherzustellen, dass die Leistung des kompilierten Codes ausreichend ist.
Falls Sie Lua nicht kennen, können Sie den Plugin Runner verwenden, um APISIX-Plugins in einer Ihnen vertrauten Programmiersprache zu entwickeln. Wir haben auch Wasm in APISIX integriert, sodass Sie Wasm-Bytecode kompilieren und in APISIX ausführen können. Dadurch können Benutzer Lua, Go, Python, Wasm usw. verwenden, um benutzerdefinierte Plugins in APISIX zu erstellen.
Dank der Architektur und Leistungsvorteile von APISIX hat das globale Nutzerwachstum von APISIX in den drei Jahren seit seiner Gründung die Erwartungen weit übertroffen. Große Technologieunternehmen wie WPS, Sina Weibo und iQiyi sind Unternehmenskunden, die täglich Milliarden von API-Anfragen verarbeiten. Darüber hinaus nutzen wissenschaftliche Einrichtungen wie die NASA und die European Factory Platform APISIX.
11 neue Highlights von APISIX 3.0
APISIX hat Anfang 2022 eine neue 3.0-Roadmap vorgestellt. In Version 3.0 konzentrieren sich die Iterationen und Updates auf Benutzerfreundlichkeit und das Ökosystem.
APISIX 3.0 wurde Ende Oktober 2022 offiziell veröffentlicht. Lassen Sie uns einen Überblick über die spannenden neuen Highlights geben!
1. Vollständige Unterstützung von ARM64
ARM64 ist zu einer sehr beliebten Serverarchitektur für Cloud-Anbieter geworden. Von AWS Graviton, GCP Tau T2A bis hin zu Huawei Kunpeng und anderen Produkten haben verschiedene Cloud-Anbieter Server auf Basis der Arm-Architektur eingeführt. Das folgende Diagramm zeigt die Leistung von APISIX unter Lasttests auf beliebten Arm-basierten Servern:
Laut aktuellen Daten ist die Leistung von Arm-basierten Servern etwas besser als die von x86-Servern. Um dem technologischen Trend der Zeit gerecht zu werden, hat APISIX umfassende CI-Regressionstests auf ARM64 durchgeführt, um sicherzustellen, dass Benutzer APISIX auch auf Arm-Architekturen problemlos nutzen können.
2. AI-Ebene
Apache APISIX fügt in Version 3.0 eine AI-Ebene hinzu, die die Leistung um 30 % verbessert (gemessen an QPS unter Lasttests). Die AI-Ebene optimiert die Konfiguration der Datenebene dynamisch, indem sie umfassende Daten wie Benutzereinstellungen für Routen und Plugins sowie Log-Metriken nutzt. Beispielsweise können die folgenden drei Szenarien automatisch durch die AI-Ebene optimiert werden:
- Wenn die Anforderungen an das Routing einfach sind (z. B. nur URI oder Host), wird der Cache aktiviert, um den Routing-Prozess zu beschleunigen.
- Wenn keine Plugins verwendet werden, wird nur der Code für den Upstream ausgeführt.
- Wenn es nur einen Upstream-Knoten gibt und keine weiteren Konfigurationsoptionen aktiviert sind, wird der Upstream auf eine leichtgewichtige Weise konfiguriert.
Die AI-Ebene eröffnet neue Möglichkeiten für die Verkehrsverarbeitung. In Zukunft könnten automatisches Aufwärmen von Upstream-Diensten und die Erkennung von Sicherheitsbedrohungen über die AI-Ebene erfolgen.
3. Hinzufügen eines gRPC-Clients
In Version 3.0 wird Apache APISIX ein neues core.grpc
-Modul unterstützen. Wenn Sie mit NGINX und OpenResty vertraut sind, wissen Sie, dass deren Unterstützung für gRPC recht begrenzt ist und nur grundlegende Funktionen wie Reverse-Proxy oder Lastenausgleich bietet.
APISIX hat bereits in der aktuellen 2.x-Version die Transkodierung zwischen gRPC- und HTTP-Protokollen implementiert. In Version 3.0 wird Apache APISIX einen neuen gRPC-Client hinzufügen, der es Entwicklern ermöglicht, direkt Drittanbieter-gRPC-Dienste aufzurufen, ohne zusätzliche Komponenten einzuführen oder Dienstleister dazu zu zwingen, verschiedene HTTP-Schnittstellen zu verwenden. Dies macht den Prozess viel einfacher.
4. Neugestaltung der Admin API
Bei der Verwendung von APISIX heute stellen Sie möglicherweise fest, dass der Antwortkörper von APISIX mit vielen bedeutungslosen Daten vermischt ist, wie z. B. einige etcd-Rückgabewerte, die direkt an den Client weitergegeben werden, ohne dass sie angepasst wurden. Außerdem ist das architektonische Design des gesamten Antwortkörpers nicht ideal, da viele redundante Felder vorhanden sind.
In der APISIX 3.0-Version wurde die Struktur des Antwortkörpers verbessert. Darüber hinaus macht das neue Design das gesamte Anforderungsformat und den Antwortkörper RESTfuler, was die Nutzung der neuesten Version der Admin API erleichtert. Natürlich können Sie auch festlegen, welche Version der Admin API über Parameter verwendet werden soll, sodass Benutzer keine Angst vor inkompatiblen Versionen haben müssen.
5. Trennung von Datenebene (DP) und Steuerungsebene (CP)
APISIX hat in den letzten zwei Jahren mehrere sicherheitsrelevante Schwachstellen erlitten. Die Ursache der meisten Schwachstellen liegt darin, dass die DP und die CP im Standard-Bereitstellungsmodus gemeinsam bereitgestellt werden. Daher kann ein Angreifer, sobald eine Sicherheitslücke auf der Datenebene besteht, direkt in die CP eindringen und alle anderen DPs beeinflussen.
Daher wird in Version 3.0 die Bereitstellungsmodus-Konfiguration unterstützt, und der Standard-Bereitstellungsmodus ist traditional
, bei dem die DP und die CP gemeinsam bereitgestellt werden. Der neue Bereitstellungsmodus empfiehlt jedoch, das Attribut auf data_plane
oder control_plane
zu setzen, um sie zu trennen.
Wenn sie getrennt sind, können nicht nur die oben genannten Sicherheitsrisiken gelöst werden, sondern auch Funktionsiterationen auf der DP und CP einfacher durchgeführt werden, ohne sich gegenseitig zu beeinflussen.
6. Verbesserte Unterstützung für Service Discovery
In der aktuellen Version unterstützt APISIX bereits die Integration vieler Service-Discovery-Komponenten wie Apache ZooKeeper, Consul und Nacos. Derzeit erfolgen diese Integrationen jedoch alle auf der Datenebene. Wenn Sie viele Knoten auf der DP haben, wird dies die folgenden Service-Discovery-Komponenten stark belasten. Gleichzeitig wünschen sich Benutzer in der Produktionsumgebung eine einfache Integration wie Consul KV oder DNS-Integration sowie eine vollständige Integration von Funktionen wie Gesundheitsprüfungen.
Daher haben wir in APISIX 3.0 eine Abstraktionsebene hinzugefügt, indem wir ein Subprojekt namens APISIX-SEED eingeführt haben, um die Service-Discovery-Unterstützung auf der Steuerungsebene zu erreichen und den Druck auf die Service-Discovery-Komponente zu verringern.
7. Hinzufügen des xRPC-Frameworks
In der aktuellen Version von APISIX wird TCP-Proxy unterstützt, aber manchmal reicht ein reiner TCP-Protokoll-Proxy nicht aus. Benutzer benötigen einen Proxy für bestimmte Anwendungsprotokolle wie Redis-Proxy, Kafka-Proxy usw., da einige Funktionen erst nach der Kodierung und Dekodierung des Protokolls implementiert werden können.
Daher implementiert APISIX in Version 3.0 ein Transport Layer Protocol Extension Framework namens xRPC, das es Entwicklern ermöglicht, spezifische Anwendungsprotokolle anzupassen. Basierend auf xRPC können Entwickler Anfragen und Antworten durch Lua-Codes kodieren und dekodieren und dann Fehlerinjektion, Log-Meldungen und dynamisches Routing basierend auf dem Verständnis des Protokollinhalts realisieren.
Basierend auf dem xRPC-Framework kann APISIX Proxy-Implementierungen für mehrere gängige Anwendungsprotokolle bereitstellen. Gleichzeitig können Benutzer auch ihre eigenen privaten TCP-basierten Anwendungsprotokolle basierend auf diesem Framework unterstützen, wodurch sie eine präzise Granularität und eine höhere Kontrolle auf Anwendungsebene ähnlich wie beim HTTP-Protokoll-Proxy erhalten. Darüber hinaus können auf verschiedenen Protokollen gemeinsame Faktoren abstrahiert werden, um verwandte Plugin-Funktionen zu implementieren, sodass andere Protokolle diese Funktionen nutzen können.
8. Unterstützung von mehr Observability auf Transport Layer-Protokollen
APISIX hat immer stark in die Unterstützung von Observability investiert und unterstützt fast alle Observability-Komponenten wie Zipkin, Apache SkyWalking und Datadog. Verschiedene Logging-Komponenten werden ebenfalls unterstützt, aber die meisten davon erfolgen auf der Anwendungsebene.
Apache APISIX wird in Version 3.0 mehr Observability-Unterstützung auf der Transportebene hinzufügen. Beispielsweise wurde die Unterstützung für Prometheus und verschiedene Logs hinzugefügt, sodass Benutzer die Probleme des Anwendungsschichtverkehrs leicht beobachten und den Betriebszustand des Transport Layer-Verkehrs überprüfen können.
9. Integration der OpenAPI-Spezifikation
APIs sind ein Element, das den gesamten Lebenszyklus der Entwicklung betrifft, vom Design über die Codierung bis hin zum Testen und Bereitstellen. In APISIX 3.0 wird Apache APISIX die standardmäßige OpenAPI 3.0-Spezifikation unterstützen.
Daher ist es einfach, die Daten in APISIX zu verwalten und zu pflegen, wenn Sie APIs auf API-Design- und Testsoftware verwalten, indem Sie sie exportieren und importieren. Gleichzeitig können verschiedene APIs in APISIX auch über die OpenAPI 3.0-Spezifikation exportiert und dann in andere Systeme importiert werden.
Darüber hinaus unterstützt APISIX 3.0 auch benutzerdefinierte Formate im Zusammenhang mit Postman (Postman Collection Format v2), wodurch der Datenaustausch zwischen den beiden erleichtert wird und die Integration einfacher wird.
10. Vollständige Unterstützung für Gateway API und Service Mesh
Die Unterstützung für die Gateway API hat im APISIX Ingress Controller begonnen, und fast alle Gateway-API-Konfigurationen werden in der neuesten Version 1.5 unterstützt.
In diesem Fall kann der APISIX Ingress über die Gateway API konfiguriert werden, was bedeutet, dass Sie zwischen verschiedenen Datenebenen wechseln können. Bis Ende dieses Jahres wird der APISIX Ingress die vollständige Unterstützung für die Gateway API sowie zusätzliche Transport- und Anwendungsschichtfunktionen bieten.
Im Gegensatz zu den meisten Service-Mesh-Lösungen hat die Service-Mesh-Lösung von APISIX Vorteile auf der Datenebene (aufgrund der hohen Leistung von APISIX selbst). Daher hoffen wir, dass die Steuerungsebene mit einigen gängigen Lösungen in der Community kompatibel sein wird. Schließlich wird durch die Verwendung des xDS-Protokolls zur Integration mit Istio und das Schreiben der erhaltenen Konfiguration in das xDS-Konfigurationszentrum von APISIX die spezifischen Routing-Regeln von APISIX generiert, um die entsprechenden Routing-Anfragen abzuschließen.
Diese Lösung macht nicht nur das gesamte Service Mesh leichter, sondern auch die benutzerdefinierte Entwicklung und Migration mit der hohen Skalierbarkeit von APISIX bequemer.
11. Integration in mehr Ökosysteme
Neben der oben genannten OpenAPI-Standard werden in Version 3.0 viele Ökosystem-Plugins hinzugefügt, wie OpenFunction, ClickHouse, Elasticsearch, SAML, CAS usw., um mehr Unterstützung für Authentifizierung, Sicherheit und Observability zu integrieren.
Eines der spannenden Plugins, Workflow, wird für die Verkehrssteuerung verwendet: Wir können einige granulare Verarbeitungen auf der Ebene der Verkehrskontrolle durchführen.
curl http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri":"/hello/*",
"plugins":{
"workflow":{
"rules":[
{
"case": [
["uri", "==", "/hello/rejected"]
],
"actions": [
[
"return",
{"code": 403}
]
]
},
{
"case": [
["uri", "==", "/hello/v2/appid"]
],
"actions": [
[
"limit-count",
{
"count": 2,
"time_window": 60,
"rejected_code": 429
}
]
]
}
]
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'
Beispielsweise kann eine bestimmte Aktion ausgeführt werden, wenn Bedingung A erfüllt ist, und eine andere Aktion, wenn Bedingung B erfüllt ist. Auf diese Weise können Benutzer verschiedene Geschäftsverkehre bequemer steuern.
Erste Schritte mit Apache APISIX 3.0
Sie können APISIX 3.0 jetzt auf der GitHub Release-Seite und der Download-Seite einsehen!
APISIX hat sich von der Anfangsversion bis zur 3.0-Version stark weiterentwickelt. Ein Open-Source-Projekt sollte nicht nur anhand von Leistung und Funktionalität bewertet werden, sondern auch aus der Perspektive der Benutzer, Entwickler und Unternehmen, ob sie das Produkt nutzen können, um ihre aktuellen Probleme schnell und effektiv zu lösen.
Die in diesem Artikel erwähnten Highlights und neuen Funktionen wurden alle durch die Open-Source-Community geschaffen. Apache APISIX ist durch das Feedback verschiedener Entwickler und Unternehmenskunden lebendiger geworden. Wenn Sie sich der Community anschließen möchten, finden Sie hier weitere Informationen: Community beitreten!