**Apache APISIX** es un portal API en tiempo real, dinámico y de alto rendimiento.
APISIX proporciona variadas opciones de manejo de tráfico tales como balanceo de cargas, upstream dinámico, comprobación tipo despliegue de canarios (canary release), interrupción de circuitos, autenticación, observabilidad y más.
Usted puede usar Apache APISIX para manejar el tráfico tradicional norte-sur,
así como tráfico este-oeste entre servicios.
También puede usarse como [k8s ingress controller (control de ingreso)](https://github.com/apache/apisix-ingress-controller).
- [Distribución de Dockers para APISIX](https://github.com/apache/apisix-docker/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
- [Sitio Web Apache APISIX](https://github.com/apache/apisix-website/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
- [El Plano de Control para APISIX](https://github.com/apache/apisix-control-plane/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
## Características
Usted puede usar Apache APISIX como un acceso de tráfico para procesar todos los datos del negocio, incluyendo direccionamiento dinámico (dynamic routing), upstream dinámico, certificados dinámicos,
ensayos A/B, ensayos de despliegue de canarios (canary release), despliegue azul-verde (blue-green), límite de tasa, defensa contra ataques maliciosos, métrica, monitoreo de alarmas, visibilidad de servicios, gobernabilidad de servicios, etc.
- **Todas las Plataformas**
- Nativo de la Nube: Agnóstico de Plataforma, libre de restricciones del vendedor, APISIX puede ejecutarse desde metal desnudo hasta Kubernetes.
- Entorno de Ejecución: Soporta tanto OpenResty como Tengine.
- Soporta ARM64: No hay que preocuparse por las restricciones de la infra tecnología.
- [Proxy Dubbo](../../en/latest/plugins/dubbo-proxy.md): Proxy dinámico HTTP a Dubbo.
- [Proxy MQTT Dinámico](../../en/latest/plugins/mqtt-proxy.md): Soporte de balance de carga MQTT por `client_id`, soporta ambos MQTT [3.1.\*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html), [5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html).
- [Proxy gRPC](../../en/latest/grpc-proxy.md): Tráfico gRPC a través de Proxy.
- [Transcodificado gRPC](../../en/latest/plugins/grpc-transcode.md): Soporta transcodificado de protocolo para que los clientes puedan acceder su gRPC API usando HTTP/JSON.
- [Las actualizaciones y los plugins más recientes](../../en/latest/plugins.md): Actualiza sus configuraciones y plugins sin reinicios!
- [Reescritura de proxy](../../en/latest/plugins/proxy-rewrite.md): Soporta la reescritura de `host`, `uri`, `schema`, `enable_websocket`, `headers` para el request antes de reenviarlo aguas arriba (upstream).
- [Reescritura de respuesta](../../en/latest/plugins/response-rewrite.md): Establece el código de estatus de respuesta personalizado, así como el cuerpo y el encabezado para el cliente.
- [Sin servidor (serverless)](../../en/latest/plugins/serverless.md): Invoque funciones en cada fase en APISIX.
- [Comprobaciones del sistema](../../en/latest/health-check.md): Permite comprobaciones del sistema en el nodo aguas arriba, y automáticamente filtrará nodos problemáticos durante el balanceo de cargas para asegurar la estabilidad del sistema.
- [Reflejo de proxy (mirror)](../../en/latest/plugins/proxy-mirror.md): Proporciona la capacidad de reflejar (mirror) los request (solicitudes) del cliente.
- [Bifurcación de tráfico](../../en/latest/plugins/traffic-split.md): Permite a los usuarios dirigir de manera creciente porciones del tráfico entre varias corrientes aguas arriba (upstreams).
- [Soporta correspondencia completa de la ruta y correspondencia del prefijo](../../en/latest/router-radixtree.md#how-to-use-libradixtree-in-apisix)
- [Soporta todas las variables integradas en Nginx como condiciones para el enrutamiento](../../en/latest/router-radixtree.md#how-to-filter-route-by-nginx-builtin-variable), así que pueden usarse `cookie`, `args`, etc. como condiciones de enrutamiento para implementar ensayos de desplegado de canarios, ensayoss A/B, etc.
- Soporta [varios operadores como condiciones de juicio para el enrutamiento](https://github.com/iresty/lua-resty-radixtree#operator-list), por ejemplo `{"arg_age", ">", 24}`
- Soporta [función personalizada de correspondencia de ruta](https://github.com/iresty/lua-resty-radixtree/blob/master/t/filter-fun.t#L10)
- IPv6: Usar IPv6 para hacer corresponder la ruta.
- [Referente Whitelist/Blacklist (listas blancas y negras)](../../en/latest/plugins/referer-restriction.md)
- [IdP](../../en/latest/plugins/openid-connect.md): Soporta servicios externos de autenticación, tales como Auth0, okta, etc., los usuarios pueden usar esto para conectarse a OAuth 2.0 y otros métodos de autenticación.
- [Límite de procesamiento de solicitudes (Limit-req)](../../en/latest/plugins/limit-req.md)
- [Límite de contador (Limit-count)](../../en/latest/plugins/limit-count.md)
- [Límite de concurrencia (Limit-concurrency)](../../en/latest/plugins/limit-conn.md)
- OpenTracing (rastreo abierto): Soporta [Apache Skywalking](../../en/latest/plugins/skywalking.md) y [Zipkin](../../en/latest/plugins/zipkin.md)
- Trabaja con descubrimiento de servicio externo:Aparte del etcd integrado (Equipo Terminal del Circuito de Datos), también soporta `Consul` y `Nacos` [DNS en modo descubrimiento](https://github.com/apache/apisix/issues/1731#issuecomment-646392129), y [Eureka](../../en/latest/discovery.md)
- Monitoreo y métrica (control de mediciones): [Prometheus](../../en/latest/plugins/prometheus.md)
- Agrupación (clustering): Nodos APISIX sin estados, crea agrupaciones del centro de configuración, por favor consultar [etcd Clustering Guide](https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/clustering.md).
- Alta disponibilidad: Soporta configurar múltiples direcciones etcd en el mismo grupo (cluster).
- [Modo stand-alone (por su cuenta)](../../en/latest/stand-alone.md): Soporta cargar reglas de ruta desde un archivo local yaml, siendo más amigable que kubernetes(k8s).
- [Regla global](../../en/latest/architecture-design/global-rule.md): Permite ejecutar cualquier plugin para todas las solicitudes, como: limit rate, IP filter etc.
- [REST Admin API](../../en/latest/admin-api.md): Al usar REST Admin API para controlar Apache APISIX, el cual solamente permite acceso 127.0.0.1 por defecto, usted puede modificar el campo `allow_admin` en `conf/config.yaml` para especificar una lista de IPs a los que se les permite llamar el Admin API. Nótese también que el Admin API utiliza autentificación de clave (key auth) para verificar la identidad de quien llama. **El campo `admin_key` en `conf/config.yaml` debe ser modificado antes del despliegue para asegurar la seguridad**.
- Loggers (accesos de registro) externos: Exporte accesos de registro para herramientas de control de acceso externo. ([HTTP Logger](../../en/latest/plugins/http-logger.md), [TCP Logger](../../en/latest/plugins/tcp-logger.md), [Kafka Logger](../../en/latest/plugins/kafka-logger.md), [UDP Logger](../../en/latest/plugins/udp-logger.md))
- [Plugins personalizados](../../en/latest/plugin-develop.md): Permite engancharse en fases comunes, tales como `rewrite`, `access`, `header filer`, `body filter` y `log`, y también permite engancharse en la etapa `balancer`.
- Instalación de dependencias en tiempo de ejecución: OpenResty y etcd, y dependencias de compilación: luarocks. Consultar [install dependencies documentation](../../en/latest/install-dependencies.md)
2. [Imagen del contenedor Docker](https://hub.docker.com/r/apache/apisix) (aplicable a todos los sistemas)
Por defecto, el paquete de Apache de más reciente publicación será descargado:
```shell
$ docker pull apache/apisix
```
La imagen del contenedor Docker no incluye `etcd`, usted puede consultar [docker compose example](https://github.com/apache/apisix-docker/tree/master/example) para iniciar un grupo de ensayos.
- Instalación de dependencias en tiempo de ejecución: Librerías de desarrollo OpenResty, etcd y OpenSSL, consultar [install dependencies documentation](../../en/latest/install-dependencies.md#centos-7)
**Nota**: Apache APISIX no soportaría más el protocolo v2 de etcd desde APISIX v2.0, y la mínima versión soportada de etcd es v3.4.0. Favor actualizar etcd cuando sea necesario. Si usted necesita migrar sus datos desde etcd v2 a la v3, por favor siga los pasos indicados en [etcd migration guide](https://etcd.io/docs/v3.4.0/op-guide/v2-migration/).
### Para desarrolladores
1. Para desarrolladores, usted puede usar la más reciente rama maestra (master branch) para experimentar más prestaciones
La Guía para Comenzar es una excelente manera de aprender los fundamentos de APISIX, basta seguir los pasos en [Getting Started](../../en/latest/getting-started.md).
Usted puede consultar la guía [plugin development guide](../../en/latest/plugin-develop.md), y la documentación e implementación de código [sample plugin `echo`](../../en/latest/plugins/echo.md).
[Resultados de la evaluación (Benchmark script)](../../../benchmark/run.sh), [método de ensayo y proceso](https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01) han sido fuente abierta, usted es bienvenido a intentarlo y contribuir.
| Le pertenece a | Apache Software Foundation | Kong Inc. |
| Arquitectura de la tecnología | Nginx + etcd | Nginx + postgres |
| Canales de comunicación | Lista de correos, grupo Wechat, grupo QQ, [GitHub](https://github.com/apache/apisix/issues), [Slack](https://join.slack.com/t/the-asf/shared_invite/zt-nggtva4i-hDCsW1S35MuZ2g_2DgVDGg), meetup | GitHub, freenode, foro |
| CPU de un solo núcleo, QPS (activa limit-count y plugins prometheus) | 18000 | 1700 |
| Latencia | 0.2 ms | 2 ms |
| Dubbo | Sí | No |
| Retroceso-deshacer de configuration | Sí | No |
| Ruta con TTL | Sí | No |
| Plug-in carga en caliente | Sí | No |
| LB y ruta personalizados | Sí | No |
| REST API <--> transcodificación gRPC | Sí | No |
| Tengine | Sí | No |
| MQTT | Sí | No |
| Tiempo efectivo de Configuración | Determinado por los eventos, <1ms|Recabandodatos,5seg|
| Tablero | Sí | No |
| IdP | Sí | No |
| Centro de configuración HA | Sí | No |
| Límite de velocidad para una ventana específica de tiempo | Sí | No |
| Soporta cualquier variable Nginx como condición de enrutamiento | Sí | No |
- [Apache APISIX: How to implement plugin orchestration in API Gateway](https://www.youtube.com/watch?v=iEegNXOtEhQ)
- [Improve Apache APISIX observability with Apache Skywalking](https://www.youtube.com/watch?v=DleVJwPs4i4)
- [APISIX technology selection, testing and continuous integration](https://medium.com/@ming_wen/apache-apisixs-technology-selection-testing-and-continuous-integration-313221b02542)
- [Analysis of Excellent Performance of Apache APISIX Microservices Gateway](https://medium.com/@ming_wen/analysis-of-excellent-performance-of-apache-apisix-microservices-gateway-fc77db4090b5)
## Historias de Usuarios
- [European Factory Platform: API Security Gateway – Using APISIX in the eFactory Platform](https://www.efactory-project.eu/post/api-security-gateway-using-apisix-in-the-efactory-platform)
- [ke.com: How to Build a Gateway Based on Apache APISIX(Chinese)](https://mp.weixin.qq.com/s/yZl9MWPyF1-gOyCp8plflA)
- [360: Apache APISIX Practice in OPS Platform(Chinese)](https://mp.weixin.qq.com/s/zHF_vlMaPOSoiNvqw60tVw)
- [HelloTalk: Exploring Globalization Based on OpenResty and Apache APISIX(Chinese)](https://www.upyun.com/opentalk/447.html)
- [Tencent Cloud: Why choose Apache APISIX to implement the k8s ingress controller?(Chinese)](https://www.upyun.com/opentalk/448.html)
- [aispeech: Why we create a new k8s ingress controller?(Chinese)](https://mp.weixin.qq.com/s/bmm2ibk2V7-XYneLo9XAPQ)
## ¿Quién usa APISIX?
Una gran variedad de compañías y organizacioes usan APISIX para investigación, producción y productos comerciales, incluyendo: