Comparaison de sélection entre API Gateway Apache APISIX et Kong
API7.ai
January 18, 2020
Apache APISIX et Kong sont tous deux des passerelles API microservices open-source, alors comment les comparer et choisir entre eux ?
Ces deux projets sont couverts par une documentation et des tests complets, et de nombreux utilisateurs en production les utilisent, donc ne vous inquiétez pas pour la stabilité et leur développement durable. Cet article se concentrera sur les fonctionnalités et performances les plus directes et vérifiables. Pour faire une comparaison sous un angle différent.
Ces deux projets sont couverts par une documentation et des tests complets, et de nombreux utilisateurs en production les utilisent, donc ne vous inquiétez pas pour la stabilité et leur développement durable. Cet article se concentrera sur les fonctionnalités et performances les plus directes et vérifiables. Pour faire une comparaison sous un angle différent.
Fonctionnalités | Apache APISIX | KONG |
---|---|---|
Upstream dynamique | Oui | Oui |
Routeur dynamique | Oui | Oui |
Vérification de santé | Oui | Oui |
SSL dynamique | Oui | Oui |
Proxy L4 et L7 | Oui | Oui |
Opentracing | Oui | Oui |
Plugin personnalisé | Oui | Oui |
API REST | Oui | Oui |
CLI | Oui | Oui |
Pour une comparaison plus détaillée.
Fonctionnalités | Apache APISIX | Kong |
---|---|---|
Appartient à | Apache Software Foundation | Kong Inc. |
Architecture technique | Nginx + etcd | Nginx + postgres |
Canaux de communication | Liste de diffusion, groupe Wechat, groupe QQ, GitHub, meetup | GitHub, freenode, forum |
CPU monocœur, QPS (activation des plugins limit-count et prometheus) | 18000 | 1700 |
Latence | 0,2 ms | 2 ms |
Dubbo | Oui | Non |
Rétablissement de configuration | Oui | Non |
Route avec TTL | Oui | Non |
Chargement à chaud des plugins | Oui | Non |
LB et route personnalisés | Oui | Non |
Transcoder REST API <--> gRPC | Oui | Non |
Tengine | Oui | Non |
MQTT | Oui | Non |
Temps d'effet de la configuration | Piloté par événement, < 1ms | Polling, 5 secondes |
Tableau de bord | Oui | Non |
IdP | Oui | Non |
HA du centre de configuration | Oui | Non |
Limitation de vitesse pour une fenêtre de temps spécifiée | Oui | Non |
Prise en charge de toute variable Nginx comme condition de routage | Oui | Non |
Performance
Après avoir activé les plugins limit-count et prometheus, la performance d'Apache APISIX est dix fois supérieure à celle de Kong.
Voici des étapes plus détaillées : https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01, les développeurs intéressés peuvent suivre l'image pour vérifier.
Pourquoi Apache APISIX surpasse-t-il ?
Ici, nous discutons des raisons derrière les différences de fonctionnalités et de performances :
-
La complexité de routage d'Apache APISIX est O(k), qui est uniquement liée à la longueur de l'uri et n'a rien à voir avec le nombre de routes ; la complexité temporelle de routage de Kong est O(n), qui augmente linéairement avec le nombre de routes.
-
La complexité temporelle de la correspondance d'IP d'Apache APISIX est O(1), ce qui ne provoquera pas l'épuisement des ressources CPU avec un grand nombre de jugements d'IP.
-
La correspondance de route d'Apache APISIX accepte toutes les variables de Nginx comme conditions et prend en charge les fonctions personnalisées ; les autres passerelles ont plusieurs conditions intégrées.
-
Apache APISIX utilise etcd comme centre de configuration. Il n'y a pas de point unique. Si une machine tombe en panne de manière arbitraire, le cluster de passerelles peut toujours fonctionner normalement. Les autres passerelles basées sur des bases de données relationnelles auront un problème de point unique.
-
La configuration d'Apache APISIX peut atteindre tous les nœuds de la passerelle en moins d'une milliseconde, en utilisant etcd watch ; les autres passerelles interrogent régulièrement la base de données, et il faut généralement 5 secondes pour obtenir la dernière configuration.
-
Les plugins d'Apache APISIX ont été soigneusement ajustés pour maintenir une latence de l'ordre de la milliseconde sous haute pression.
-
L'arrangement unique des plugins d'Apache APISIX et la fonctionnalité de faible code peuvent grandement réduire le seuil de développement secondaire.