Comparativa de selección entre API Gateway Apache APISIX y Kong

API7.ai

January 18, 2020

Products

Apache APISIX y Kong son ambos gateways de API de microservicios de código abierto, entonces, ¿cómo se comparan y cómo elegir entre ellos?

Estos dos proyectos cuentan con documentación y pruebas completas, y muchos usuarios en producción los están utilizando, por lo que no hay que preocuparse por su estabilidad y desarrollo sostenible. Este artículo se centrará en las funciones y el rendimiento más directos y verificables, para hacer una comparación desde una perspectiva diferente.

Estos dos proyectos cuentan con documentación y pruebas completas, y muchos usuarios en producción los están utilizando, por lo que no hay que preocuparse por su estabilidad y desarrollo sostenible. Este artículo se centrará en las funciones y el rendimiento más directos y verificables, para hacer una comparación desde una perspectiva diferente.

CaracterísticasApache APISIXKONG
Upstream dinámicoSíSí
Enrutador dinámicoSíSí
Chequeo de saludSíSí
SSL dinámicoSíSí
Proxy L4 y L7SíSí
OpentracingSíSí
Plugin personalizadoSíSí
API RESTSíSí
CLISíSí

Para una comparación más detallada.

CaracterísticasApache APISIXKong
Pertenece aApache Software FoundationKong Inc.
Arquitectura técnicaNginx + etcdNginx + postgres
Canales de comunicaciónLista de correo, grupo de Wechat, grupo de QQ, GitHub, meetupGitHub, freenode, foro
CPU de un solo núcleo, QPS (habilitando plugins limit-count y prometheus)180001700
Latencia0.2 ms2 ms
DubboSíNo
Reversión de configuraciónSíNo
Ruta con TTLSíNo
Carga en caliente de pluginsSíNo
Balanceador de carga y ruta personalizadosSíNo
Transcripción de API REST <--> gRPCSíNo
TengineSíNo
MQTTSíNo
Tiempo de efectividad de la configuraciónBasado en eventos, < 1msPolling, 5 segundos
Panel de controlSíNo
IdPSíNo
Alta disponibilidad del centro de configuraciónSíNo
Limitación de velocidad para una ventana de tiempo específicaSíNo
Soporte de cualquier variable de Nginx como condición de enrutamientoSíNo

Rendimiento

Después de habilitar los plugins limit-count y prometheus, el rendimiento de Apache APISIX es diez veces superior al de Kong.

Aquí hay pasos más detallados: https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01, los desarrolladores interesados pueden seguir la imagen para verificar.

¿Por qué Apache APISIX supera a Kong?

Aquí discutimos las razones detrás de las diferencias en funcionalidad y rendimiento:

  1. La complejidad de enrutamiento de Apache APISIX es O(k), que solo está relacionada con la longitud del URI y no tiene nada que ver con el número de rutas; la complejidad temporal de enrutamiento de Kong es O(n), que aumenta linealmente con el número de rutas.

  2. La complejidad temporal de coincidencia de IP de Apache APISIX es O(1), lo que no agotará los recursos de la CPU con un gran número de juicios de IP.

  3. La coincidencia de rutas de Apache APISIX acepta todas las variables de Nginx como condiciones y admite funciones personalizadas; otras puertas de enlace tienen varias condiciones integradas.

  4. Apache APISIX utiliza etcd como centro de configuración. No hay un punto único. Si una máquina falla arbitrariamente, el clúster de la puerta de enlace aún puede funcionar normalmente. Otras puertas de enlace basadas en bases de datos relacionales tendrán un problema de punto único.

  5. La configuración de Apache APISIX puede llegar a todos los nodos de la puerta de enlace en menos de 1 milisegundo, utilizando etcd watch; otras puertas de enlace consultan la base de datos periódicamente, y generalmente tardan 5 segundos en obtener la última configuración.

  6. Los plugins de Apache APISIX han sido cuidadosamente ajustados para mantener una latencia de milisegundos bajo alta presión.

  7. La disposición única de plugins y la característica de bajo código de Apache APISIX pueden reducir significativamente el umbral de desarrollo secundario.

Lectura adicional

Tags:
Share article link