Puerta de enlace API Apache APISIX
Apache APISIX es una puerta de enlace API dinámica, en tiempo real y de alto rendimiento.
APISIX API Gateway proporciona funciones avanzadas de gestión del tráfico, como equilibrio de carga, flujo ascendente dinámico, liberación canary, interrupción de circuitos, autenticación, observabilidad y más.
Puede utilizar APISIX API Gateway para manejar el tráfico tradicional de norte a sur, así como el tráfico de este a oeste entre servicios. También se puede utilizar como controlador de ingreso k8s.
La arquitectura técnica de Apache APISIX:
Comunidad
- Por favor escriba una reseña para APISIX en G2.
- Lista de correo: envíe un correo electrónico a [email protected], siga la respuesta para suscribirse a la lista de correo.
- Slack Workspace: enlace de invitación (abra un problema si este enlace ha caducado) y luego únase al canal #apisix (Canales -> Explorar canales -> busque "apisix").
- - síguenos e interactúa con nosotros usando el hashtag
#ApacheAPISIX
- Documentación
- Discusiones
- Blog
Características
Puede utilizar APISIX API Gateway como entrada de tráfico para procesar todos los datos comerciales, incluido el enrutamiento dinámico, el flujo ascendente dinámico, los certificados dinámicos, las pruebas A/B, la versión canary, la implementación azul-verde, la tasa límite, la defensa contra ataques maliciosos, las métricas y la supervisión. alarmas, observabilidad del servicio, gobernanza del servicio, etc.
Todas las plataformas
- Nativo de la nube: independiente de la plataforma, sin dependencia del proveedor, APISIX API Gateway puede ejecutarse desde bare-metal hasta Kubernetes.
- Admite ARM64: no se preocupe por el bloqueo de la tecnología de infraestructura.
Protocolos múltiples
- Proxy TCP/UDP: Proxy TCP/UDP dinámico.
- Proxy Dubbo: HTTP dinámico a proxy Dubbo.
- Proxy MQTT dinámico: admite el equilibrio de carga de MQTT mediante
client_id
, ambos admiten MQTT 3.1.*, 5.0. - Proxy gRPC: proxy del tráfico gRPC.
- Proxy web gRPC: proxy del tráfico web gRPC al servicio gRPC.
- Transcodificación de gRPC: admite la transcodificación de protocolos para que los clientes puedan acceder a su API de gRPC mediante HTTP/JSON.
- Enchufe web proxy
- Protocolo de proxy
- Proxy de reenvío HTTP(S)
- SSL: cargar dinámicamente un certificado SSL
- HTTP/3 con QUIC
Dinámico completo
- Actualizaciones y complementos en caliente: actualiza continuamente sus configuraciones y complementos sin reiniciar.
- Reescritura de proxy: admite la reescritura del
host
, uri
, schema
, method
y headers
de la solicitud antes de enviarla al flujo ascendente. - Reescritura de respuesta: establezca el código de estado, el cuerpo y el encabezado de la respuesta personalizados para el cliente.
- Equilibrio de carga dinámico: equilibrio de carga por turnos con peso.
- Equilibrio de carga basado en hash: equilibrio de carga con sesiones de hash consistentes.
- Comprobaciones de estado: habilite la comprobación de estado en el nodo ascendente y filtrará automáticamente los nodos en mal estado durante el equilibrio de carga para garantizar la estabilidad del sistema.
- Disyuntor: Seguimiento inteligente de servicios upstream en mal estado.
- Proxy Mirror: proporciona la capacidad de reflejar las solicitudes de los clientes.
- División de tráfico: permite a los usuarios dirigir de forma incremental porcentajes de tráfico entre varios canales ascendentes.
Enrutamiento detallado
- Admite coincidencia de ruta completa y coincidencia de prefijo
- Admite todas las variables integradas de Nginx como condiciones para el enrutamiento, por lo que puedes usar
cookie
, args
, etc. como condiciones de enrutamiento para implementar la versión canary, pruebas A/B, etc. - Admite varios operadores como condiciones de juicio para el enrutamiento, por ejemplo
{"arg_age", ">", 24}
- Admite la función de coincidencia de ruta personalizada
- IPv6: utilice IPv6 para coincidir con la ruta.
- Soporte TTL
- Prioridad de soporte
- Admitir solicitudes HTTP por lotes
- Admite ruta de filtrado por atributos GraphQL
Seguridad
- Amplio soporte de autenticación y autorización:
- autenticación clave
- JWT
- autenticación básica
- lobo-rbac
- cabina
- capa de llaves
- casdoor
- Lista blanca/lista negra de IP
- Lista blanca/lista negra de referentes
- IdP: Admite plataformas de identidad externas, como Auth0, okta, etc.
- Requisito de límite
- recuento límite
- Límite de concurrencia
- Anti-ReDoS (Expresión regular Denegación de servicio): Políticas integradas para Anti ReDoS sin configuración.
- CORS Habilite CORS (intercambio de recursos entre orígenes) para su API.
- Bloqueador de URI: bloquea la solicitud del cliente por URI.
- Validador de solicitudes
- CSRF Basado en la forma
Double Submit Cookie
, proteja su API de ataques CSRF.
compatible con OPS
- Seguimiento de Zipkin: Zipkin
- APM de código abierto: compatible con Apache SkyWalking
- Funciona con descubrimiento de servicios externos: además del etcd integrado, también es compatible con Consul, Consul_kv, Nacos, Eureka y Zookeeper (CP).
- Monitoreo y métricas: Prometheus
- Agrupación en clústeres: los nodos APISIX no tienen estado, crean una agrupación en clústeres del centro de configuración; consulte la Guía de agrupación en clústeres de etcd.
- Alta disponibilidad: soporte para configurar múltiples direcciones etcd en el mismo clúster.
- Panel
- Control de versiones: admite reversiones de operaciones.
- CLI: iniciardetenerrecargar APISIX a través de la línea de comando.
- Independiente: admite la carga de reglas de ruta desde un archivo YAML local, es más amigable, como en Kubernetes (k8s).
- Regla global: permite ejecutar cualquier complemento para todas las solicitudes, por ejemplo: tasa límite, filtro de IP, etc.
- Alto rendimiento: el QPS de un solo núcleo alcanza los 18k con un retraso promedio de menos de 0,2 milisegundos.
- Inyección de fallas
- API de administración REST: al utilizar la API de administración REST para controlar Apache APISIX, que solo permite el acceso 127.0.0.1 de forma predeterminada, puede modificar el campo
allow_admin
en conf/config.yaml
para especificar una lista de IP a las que se les permite llamar a la API de administración. . Además, tenga en cuenta que la API de administración utiliza autenticación de clave para verificar la identidad de la persona que llama. - Registradores externos: exporte registros de acceso a herramientas de administración de registros externos. (Registrador HTTP, Registrador TCP, Registrador Kafka, Registrador UDP, Registrador RocketMQ, Registrador SkyWalking, Registro en la nube de Alibaba (SLS), Registro en la nube de Google, Registro Splunk HEC, Registrador de archivos, Registro de SolarWinds Loggly, TencentCloud CLS).
- ClickHouse: envía registros a ClickHouse.
- Elasticsearch: envía registros a Elasticsearch.
- Datadog: envía métricas personalizadas al servidor DogStatsD, viene incluido con el agente Datadog, a través del protocolo UDP. DogStatsD básicamente es una implementación del protocolo StatsD que recopila métricas personalizadas para el agente Apache APISIX, las agrega en un único punto de datos y las envía al servidor Datadog configurado.
- Cartas de timón
- HashiCorp Vault: admite una solución de gestión de secretos para acceder a secretos desde el almacenamiento seguro de Vault respaldado en un entorno de baja confianza. Actualmente, las claves RS256 (pares de claves pública-privada) o claves secretas se pueden vincular desde la bóveda en el complemento de autenticación jwt-auth utilizando el recurso APISIX Secret.
Altamente escalable
- Complementos personalizados: permite conectar fases comunes, como
rewrite
, access
, header filter
, body filter
y log
, también permite conectar la etapa balancer
. - El complemento se puede escribir en Java/Go/Python
- El complemento se puede escribir con Proxy Wasm SDK
- Algoritmos de equilibrio de carga personalizados: puede utilizar algoritmos de equilibrio de carga personalizados durante la fase
balancer
. - Enrutamiento personalizado: ayude a los usuarios a implementar ellos mismos algoritmos de enrutamiento.
Soporte multilingüe
- Apache APISIX es una puerta de enlace multilingüe para el desarrollo de complementos y brinda soporte a través de
RPC
y Wasm
. - La forma RPC es la forma actual. Los desarrolladores pueden elegir el idioma según sus necesidades y luego de iniciar un proceso independiente con RPC, intercambia datos con APISIX a través de comunicación RPC local. Hasta este momento, APISIX tiene soporte para Java, Golang, Python y Node.js.
- El Wasm o WebAssembly, es una forma experimental. APISIX puede cargar y ejecutar el código de bytes de Wasm a través del complemento APISIX wasm escrito con Proxy Wasm SDK. Los desarrolladores solo necesitan escribir el código de acuerdo con el SDK y luego compilarlo en un código de bytes de Wasm que se ejecuta en Wasm VM con APISIX.
Sin servidor
- Funciones Lua: Invoca funciones en cada fase en APISIX.
- AWS Lambda: la integración con AWS Lambda funciona como un flujo ascendente dinámico para enviar todas las solicitudes de un URI particular al punto final de la puerta de enlace API de AWS. Admite autorización mediante clave API y secreto de acceso de AWS IAM.
- Funciones de Azure: integración perfecta con la función Azure Serverless como un flujo ascendente dinámico para enviar todas las solicitudes de un URI particular a la nube de Microsoft Azure.
- Apache OpenWhisk: integración perfecta con Apache OpenWhisk como un flujo ascendente dinámico para enviar todas las solicitudes de un URI particular a su propio clúster de OpenWhisk.
Empezar
Instalación
Consulte la documentación de instalación.
Empezando
La guía de introducción es una excelente manera de aprender los conceptos básicos de APISIX. Simplemente siga los pasos de Introducción.
Además, puede seguir la documentación para probar más complementos.
API de administrador
Apache APISIX proporciona una API de administración REST para controlar dinámicamente el clúster de Apache APISIX.
Desarrollo de complementos
Puede consultar la guía de desarrollo de complementos y la implementación del código del example-plugin
. Leer el concepto del complemento le ayudará a aprender más sobre el complemento.
Para obtener más documentos, consulte el sitio de documentación de Apache APISIX.
Punto de referencia
Utilizando el servidor de ocho núcleos de AWS, el QPS de APISIX alcanza 140.000 con una latencia de sólo 0,2 ms.
El script de referencia ha sido de código abierto, bienvenido a intentarlo y contribuir.
APISIX también funciona perfectamente en AWS graviton3 C7g.
Historias de usuarios
- Plataforma europea eFactory: API Security Gateway: uso de APISIX en la plataforma eFactory
- Software del sistema de referencia Copernicus
- Más historias
¿Quién utiliza APISIX API Gateway?
Una amplia variedad de empresas y organizaciones utilizan APISIX API Gateway para investigación, producción y productos comerciales, a continuación se detallan algunas de ellas:
- Airwallex
- Bilibili
- CVTE
- Plataforma europea eFactory
- Sistema de referencia europeo Copernicus
- Geeley
- HONOR
- Robótica Horizonte
- iQIYI
- lenovo
- JPL de la NASA
- Nayuki
- OPPO
- QingCloud
- Swisscom
- Juego Tencent
- viajesky
- vivo
- Sina Weibo
- Nosotros ciudad
- WPS
- XPENG
- Zoom
Logotipos
- Logotipo de Apache APISIX (PNG)
- Fuente del logotipo de Apache APISIX
Expresiones de gratitud
Inspirado en Kong y Orange.
Licencia
Licencia Apache 2.0