Apache APISIX 3.0 : 11 points forts de la passerelle API open source
La version 3.0 de la passerelle API open source Apache APISIX arrive ! Nous avons sélectionné 11 fonctionnalités essentielles pour en donner un aperçu.
La passerelle API joue depuis longtemps un rôle essentiel. Elle s'est engagée à fournir diverses fonctions telles que la limitation de débit, l'authentification (par exemple, Utiliser Keycloak pour sécuriser les API) et l'observabilité au niveau métier.
La passerelle API Apache APISIX
Apache APISIX est né pour aider les entreprises à résoudre les nouveaux problèmes des environnements cloud-native et des microservices. Par exemple, il permet la mise à l'échelle automatique du trafic métier grâce à la fonctionnalité entièrement dynamique et à une modification unique pour faciliter la gestion des clusters.
Ainsi, dans la conception architecturale d'APISIX, le plan de données et le plan de contrôle sont séparés pour permettre une gestion entièrement dynamique et des clusters, principalement réalisée par les composants etcd.
APISIX stocke et gère les configurations liées au routage et aux plugins dans etcd. Comme le montre la figure ci-dessus, les configurations provenant de l'API Admin (Plan de contrôle) sont stockées dans etcd, tandis que le plan de données à gauche surveille principalement les changements dans etcd. Le plan de données peut rapidement observer les changements sans avoir besoin de modifier les fichiers de configuration.
Mais résoudre ces problèmes ne suffit pas. En tant que middleware recevant des requêtes à la fois de l'upstream et du downstream, la passerelle API occupe une position cruciale dans l'architecture d'entreprise en tant qu'entrée de trafic et lien entre les couches de service. Le rôle de la passerelle API diffère des bases de données qui ne reçoivent que des requêtes au niveau métier de l'utilisateur.
En plus des exigences métier, les passerelles API ont également des besoins en matière de personnalisation et d'intégration. Ainsi, comment faciliter le développement personnalisé pour les développeurs lors de l'utilisation d'APISIX est un autre point sensible qu'APISIX résout, en abaissant le seuil de codage pour les développeurs.
Dans APISIX, les plugins sont principalement développés en Lua, et LuaJIT (un compilateur Just-In-Time pour Lua) est utilisé pour garantir que les performances du code compilé sont suffisamment bonnes.
Si vous n'êtes pas familier avec Lua, vous pouvez utiliser Plugin Runner, développant des plugins APISIX en utilisant les langages de programmation que vous connaissez. Nous avons également intégré Wasm dans APISIX, et vous pouvez utiliser Wasm pour compiler du bytecode Wasm à exécuter dans APISIX. Ainsi, les utilisateurs peuvent utiliser Lua, Go, Python, Wasm, etc., pour créer des plugins personnalisés sur APISIX.
Grâce à l'architecture et aux performances supérieures d'APISIX, la croissance mondiale des utilisateurs d'APISIX a largement dépassé les attentes au cours des trois années depuis sa création. Par exemple, de grandes entreprises technologiques telles que WPS, Sina Weibo et iQiyi sont des utilisateurs de niveau entreprise gérant des dizaines de milliards de requêtes API par jour. En outre, des institutions de recherche scientifique comme la NASA et la European Factory Platform utilisent APISIX.
11 Nouveautés d'APISIX 3.0
APISIX a proposé une nouvelle feuille de route 3.0 début 2022. Dans la version 3.0, ses itérations et mises à jour se concentreront sur la facilité d'utilisation et l'écosystème.
APISIX 3.0 a été officiellement publié fin octobre 2022. Faisons un tour d'horizon des nouvelles fonctionnalités passionnantes !
1. Support complet d'ARM64
ARM64 est devenu un choix d'architecture de serveur très courant pour les fabricants de cloud. D'AWS Graviton, GCP Tau T2A à Huawei Kunpeng et d'autres produits, nous pouvons voir que divers fabricants de cloud ont commencé à lancer des serveurs basés sur l'architecture Arm. Le graphique suivant montre les performances de test de charge d'APISIX sur des serveurs populaires basés sur Arm :
Selon les données actuelles, les performances des serveurs basés sur Arm sont légèrement meilleures que celles des serveurs x86. Pour suivre la tendance technologique de l'époque, APISIX a également effectué des tests de régression CI complets sur ARM64 pour s'assurer que les utilisateurs peuvent toujours exécuter diverses fonctions de manière fluide lors de l'exécution d'APISIX sur l'architecture Arm.
2. Plan AI
Apache APISIX ajoute un plan AI dans la version 3.0, améliorant les performances de 30 % (mesurées par le QPS sous test de charge). Le plan AI optimisera dynamiquement la configuration du plan de données, en utilisant des données complètes telles que les paramètres des utilisateurs sur les routes et les plugins, ainsi que les métriques de journalisation. Par exemple, les trois scénarios suivants peuvent être automatiquement optimisés par le plan AI :
- Lorsque l'exigence de correspondance est simple (par exemple, contenant uniquement uri ou host), le cache est activé pour accélérer le processus de correspondance des routes.
- S'il n'y a pas de plugin, seul le code lié à l'upstream sera exécuté.
- S'il n'y a qu'un seul nœud upstream et qu'aucune autre option de configuration n'est activée, l'upstream sera configuré de manière légère.
Le plan AI ouvre de nouvelles possibilités pour le traitement du trafic. À l'avenir, un préchauffage automatique des services upstream et la détection des menaces de sécurité pourront tous être traités via le plan AI.
3. Ajout d'un client gRPC
Dans la version 3.0, Apache APISIX prendra en charge un nouveau module core.grpc
. Cependant, si vous êtes familier avec NGINX et OpenResty, vous savez que leur support pour gRPC est assez limité, ne fournissant que des fonctionnalités de base comme le proxy inverse ou l'équilibrage de charge.
APISIX a déjà implémenté la transcodage entre les protocoles gRPC et HTTP dans la version actuelle 2.x. Dans la version 3.0, Apache APISIX ajoutera un nouveau client gRPC pour permettre aux développeurs d'appeler directement des services gRPC tiers sans introduire de composants supplémentaires ou exiger que les fournisseurs de services utilisent des interfaces HTTP différentes, rendant le processus beaucoup plus simple.
4. Redesign de l'API Admin
Lorsque vous utilisez APISIX aujourd'hui, vous pouvez constater que le corps de réponse d'APISIX est mélangé avec beaucoup de données sans signification, comme certaines valeurs de retour etcd qui sont transmises directement au client sans aucun ajustement. De plus, la conception architecturale de l'ensemble du corps de réponse n'est pas idéale, avec de nombreux champs redondants.
Dans la version 3.0 d'APISIX, la structure du corps de réponse a été améliorée. En outre, la nouvelle conception rend le format de requête global et le corps de retour plus RESTful, facilitant l'utilisation de la dernière version de l'API Admin pour les utilisateurs. Bien sûr, ce processus vous permet également de définir quelle version de l'API Admin utiliser via des paramètres, libérant les utilisateurs de la crainte de passer à des versions incompatibles.
5. Séparation du Plan de Données (DP) et du Plan de Contrôle (CP)
APISIX a subi plusieurs vulnérabilités liées à la sécurité au cours des deux dernières années. La cause principale de la plupart des vulnérabilités est que le DP et le CP sont déployés ensemble dans le mode de déploiement par défaut. Par conséquent, dès qu'une vulnérabilité de sécurité existe sur le plan de données, un attaquant peut directement envahir le CP via le DP, affectant tous les autres DP.
Par conséquent, dans la version 3.0, le mode de déploiement est pris en charge, et le mode de déploiement par défaut est traditionnel
, où le DP et le CP sont déployés ensemble. Bien sûr, le nouveau mode de déploiement recommande de définir l'attribut à data_plane ou control_plane pour les séparer.
Lorsqu'ils sont séparés, non seulement les risques de sécurité mentionnés ci-dessus peuvent être résolus, mais les itérations de fonctionnalités sur le DP et le CP sont également plus faciles à gérer sans s'affecter mutuellement.
6. Amélioration du support de la découverte de services
Dans la version actuelle, APISIX a pris en charge l'intégration de nombreux composants de découverte de services, tels qu'Apache ZooKeeper, Consul, Nacos, etc. Mais actuellement, ces intégrations sont toutes effectuées sur le plan de données. Une fois que vous avez beaucoup de nœuds sur le DP, cela mettra beaucoup de pression sur les composants de découverte de services suivants. En même temps, dans l'environnement de production réel des utilisateurs, ils souhaitent une intégration simple comme Consul KV ou l'intégration DNS et une intégration complète des fonctions telles que les vérifications de santé.
Par conséquent, dans APISIX 3.0, nous avons ajouté une couche d'abstraction en ajoutant un sous-projet APISIX-SEED pour réaliser le support de la découverte de services au niveau du plan de contrôle et réduire la pression sur le composant de découverte de services.
7. Ajout du framework xRPC
Le proxy TCP est pris en charge dans la version actuelle d'APISIX, mais il y a des moments où un proxy de protocole TCP pur ne suffit pas. Les utilisateurs ont besoin d'un proxy pour des protocoles d'application spécifiques, comme le proxy Redis, le proxy Kafka, etc., car certaines fonctions ne peuvent être implémentées qu'après le codage et le décodage du protocole.
Par conséquent, dans la version 3.0, APISIX implémente un framework d'extension de protocole de couche de transport appelé xRPC qui permet aux développeurs de personnaliser des protocoles d'application spécifiques. Basé sur xRPC, les développeurs peuvent encoder et décoder les requêtes et les réponses via des codes Lua, puis réaliser l'injection de fautes, le reporting de logs et le routage dynamique en comprenant le contenu du protocole.
Basé sur le framework xRPC, APISIX peut fournir des implémentations de proxy pour plusieurs protocoles d'application principaux. En même temps, les utilisateurs peuvent également prendre en charge leurs propres protocoles d'application privés basés sur TCP via ce framework, leur permettant d'avoir une granularité précise et un contrôle d'application de couche supérieur similaire au proxy de protocole HTTP. De plus, sur différents protocoles, certains facteurs communs peuvent être abstraits pour implémenter des fonctionnalités de plugin connexes afin que d'autres protocoles puissent partager ces fonctionnalités.
8. Support accru de l'observabilité sur les protocoles de couche de transport
APISIX a toujours investi massivement dans le support de l'observabilité, prenant en charge presque tous les composants d'observabilité, tels que Zipkin, Apache SkyWalking, Datadog, et plus encore. Divers composants de journalisation sont également pris en charge, mais la plupart sont effectués au niveau de la couche application.
Apache APISIX ajoutera plus de support d'observabilité de couche de transport dans la version 3.0. Par exemple, le support pour Prometheus et divers logs a été ajouté, permettant aux utilisateurs d'observer facilement les problèmes de trafic de couche application et de vérifier l'état de fonctionnement du trafic de couche transport.
9. Intégration de la spécification OpenAPI
L'API est un élément qui implique l'ensemble du cycle de vie du développement, de la conception au codage, aux tests et au déploiement. Dans APISIX 3.0, Apache APISIX prendra en charge la spécification OpenAPI 3.0 standard.
Par conséquent, si vous gérez les API sur des logiciels de conception et de test d'API, il est très simple de gérer et de maintenir les données dans APISIX en les exportant et en les important. En même temps, diverses API dans APISIX peuvent également être expédiées via la spécification OpenAPI 3.0 puis importées dans d'autres systèmes pour utilisation.
En outre, APISIX 3.0 prend également en charge les formats personnalisés liés à Postman (Postman Collection Format v2), permettant le transfert de données entre les deux, rendant ainsi l'intégration plus facile.
10. Support complet de l'API Gateway et du Service Mesh
Le support de l'API Gateway a commencé dans le contrôleur d'entrée APISIX, et presque toutes les configurations de l'API Gateway sont prises en charge dans la dernière version 1.5.
Dans ce cas, l'entrée APISIX peut être configurée en utilisant l'API Gateway, ce qui signifie que vous pouvez basculer entre différents plans de données. D'ici la fin de cette année, l'entrée APISIX aura un support complet de l'API Gateway et des fonctionnalités supplémentaires de couche transport et application.
Contrairement à la plupart des solutions de service mesh, la solution de service mesh d'APISIX a des avantages au niveau du plan de données (grâce aux hautes performances d'APISIX lui-même). Ainsi, dans le choix du plan de contrôle, nous espérons qu'il sera compatible avec certaines solutions principales de la communauté. Enfin, en utilisant le protocole xDS pour s'intégrer à Istio et en écrivant la configuration obtenue dans le centre de configuration xDS d'APISIX, les règles de routage spécifiques sont générées par APISIX pour compléter les requêtes de routage correspondantes.
Cette solution rend non seulement l'ensemble du service mesh plus léger, mais rend également le développement personnalisé et la migration plus pratiques grâce à la haute extensibilité d'APISIX.
11. Intégration avec plus d'écosystèmes
En plus de la norme OpenAPI mentionnée ci-dessus, de nombreux plugins d'écosystème seront ajoutés dans la version 3.0, tels qu'OpenFunction, ClickHouse, Elasticsearch, SAML, CAS, etc., pour intégrer plus de support pour l'authentification, la sécurité et l'observabilité.
L'un des plugins passionnants, workflow, est utilisé pour la planification du trafic : nous pouvons effectuer un traitement granulaire au niveau du contrôle du trafic.
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
}
}
}'
Par exemple, effectuer une action spécifique lorsque la condition A est vraie, effectuer une autre action lorsque la condition B est vraie, etc. De cette manière, les utilisateurs peuvent planifier plus facilement divers trafics métier.
Commencez avec Apache APISIX 3.0
Vous pouvez maintenant consulter APISIX 3.0 sur la page des versions GitHub et la page de téléchargement !
APISIX a beaucoup évolué depuis le début jusqu'à la version 3.0. Un projet open source ne peut pas être jugé uniquement sur les performances et les fonctionnalités, mais doit être considéré du point de vue des utilisateurs, des développeurs et des entreprises pour déterminer s'ils peuvent utiliser le produit pour résoudre rapidement et efficacement leurs points sensibles actuels.
Les points forts et les nouvelles fonctionnalités mentionnés dans cet article sont tous créés par la communauté open source. Apache APISIX est devenu plus dynamique en recevant des retours de différents développeurs et utilisateurs d'entreprise. Si vous souhaitez rejoindre cette dynamique, consultez la communauté ici !