Gateway de API Apache APISIX
Apache APISIX é um API Gateway dinâmico, em tempo real e de alto desempenho.
APISIX API Gateway fornece recursos avançados de gerenciamento de tráfego, como balanceamento de carga, upstream dinâmico, liberação canário, interrupção de circuito, autenticação, observabilidade e muito mais.
Você pode usar o APISIX API Gateway para lidar com o tráfego norte-sul tradicional, bem como o tráfego leste-oeste entre serviços. Também pode ser usado como controlador de entrada k8s.
A arquitetura técnica do Apache APISIX:
Comunidade
- Por favor, escreva um comentário sobre APISIX no G2.
- Lista de discussão: Envie para [email protected], siga a resposta para se inscrever na lista de discussão.
- Slack Workspace - link de convite (abra um problema se este link expirar) e, em seguida, entre no canal #apisix (Canais -> Navegar pelos canais -> pesquise "apisix").
- - siga e interaja conosco usando a hashtag
#ApacheAPISIX
- Documentação
- Discussões
- Blogue
Características
Você pode usar o APISIX API Gateway como uma entrada de tráfego para processar todos os dados de negócios, incluindo roteamento dinâmico, upstream dinâmico, certificados dinâmicos, testes A/B, lançamento canário, implantação azul-verde, taxa limite, defesa contra ataques maliciosos, métricas, monitoramento alarmes, observabilidade de serviço, governança de serviço, etc.
Todas as plataformas
- Nativo da nuvem: independente de plataforma, sem dependência de fornecedor, o APISIX API Gateway pode ser executado de bare-metal até Kubernetes.
- Suporta ARM64: Não se preocupe com o aprisionamento da tecnologia de infra-estrutura.
Multiprotocolos
- Proxy TCP/UDP: Proxy TCP/UDP dinâmico.
- Proxy Dubbo: HTTP dinâmico para proxy Dubbo.
- Proxy MQTT dinâmico: suporta balanceamento de carga MQTT por
client_id
, ambos suportam MQTT 3.1.*, 5.0. - Proxy gRPC: proxy do tráfego gRPC.
- Proxy da Web gRPC: proxy do tráfego da Web gRPC para o serviço gRPC.
- Transcodificação gRPC: oferece suporte à transcodificação de protocolo para que os clientes possam acessar sua API gRPC usando HTTP/JSON.
- Websocket proxy
- Protocolo proxy
- Proxy de encaminhamento HTTP(S)
- SSL: carregue dinamicamente um certificado SSL
- HTTP/3 com QUIC
Totalmente Dinâmico
- Hot Updates e Hot Plugins: Atualiza continuamente suas configurações e plugins sem reinicializações!
- Reescrita de proxy: suporte para reescrever o
host
, uri
, schema
, method
e headers
da solicitação antes de enviar para o upstream. - Reescrita de resposta: Defina código de status de resposta personalizado, corpo e cabeçalho para o cliente.
- Balanceamento de carga dinâmico: balanceamento de carga round-robin com peso.
- Balanceamento de carga baseado em hash: Balanceamento de carga com sessões de hash consistentes.
- Verificações de integridade: habilite a verificação de integridade no nó upstream e filtrará automaticamente os nós não íntegros durante o balanceamento de carga para garantir a estabilidade do sistema.
- Circuit-Breaker: Rastreamento inteligente de serviços upstream não saudáveis.
- Proxy Mirror: Fornece a capacidade de espelhar solicitações de clientes.
- Divisão de tráfego: permite que os usuários direcionem de forma incremental porcentagens de tráfego entre vários upstreams.
Roteamento refinado
- Suporta correspondência de caminho completo e correspondência de prefixo
- Suporta todas as variáveis integradas do Nginx como condições de roteamento, para que você possa usar
cookie
, args
, etc. como condições de roteamento para implementar lançamento canário, testes A/B, etc. - Oferece suporte a vários operadores como condições de julgamento para roteamento, por exemplo
{"arg_age", ">", 24}
- Suporta função de correspondência de rota personalizada
- IPv6: Use IPv6 para corresponder à rota.
- Suporte TTL
- Prioridade de suporte
- Suporte a solicitações HTTP em lote
- Suporta rota de filtragem por atributos GraphQL
Segurança
- Autenticação avançada e suporte de autorização:
- autenticação de chave
- JWT
- autenticação básica
- lobo-rbac
- cassino
- capa de chave
- porta externa
- Lista branca/lista negra de IP
- Lista de permissões/lista negra de referenciadores
- IdP: Suporta plataformas de identidade externas, como Auth0, okta, etc.
- Limite requerido
- Contagem limite
- Limite de simultaneidade
- Anti-ReDoS (Expressão regular de negação de serviço): Políticas integradas para Anti ReDoS sem configuração.
- CORS Habilite CORS (compartilhamento de recursos de origem cruzada) para sua API.
- Bloqueador de URI: bloqueia a solicitação do cliente por URI.
- Solicitar Validador
- CSRF Baseado no método
Double Submit Cookie
, proteja sua API contra ataques CSRF.
Compatível com operações
- Rastreamento Zipkin: Zipkin
- APM de código aberto: suporte ao Apache SkyWalking
- Funciona com descoberta de serviço externo: Além do etcd integrado, também suporta Consul, Consul_kv, Nacos, Eureka e Zookeeper (CP).
- Monitoramento e métricas: Prometheus
- Clustering: os nós APISIX não têm estado, criam clustering do centro de configuração, consulte o Guia de Clustering etcd.
- Alta disponibilidade: Suporte para configurar vários endereços etcd no mesmo cluster.
- Painel
- Controle de versão: suporta reversões de operações.
- CLI: startstopreload APISIX através da linha de comando.
- Autônomo: suporta o carregamento de regras de rota do arquivo YAML local, é mais amigável, como no kubernetes (k8s).
- Regra Global: Permite executar qualquer plugin para todas as solicitações, ex.: limite de taxa, filtro de IP etc.
- Alto desempenho: O QPS de núcleo único atinge 18k com um atraso médio inferior a 0,2 milissegundos.
- Injeção de falhas
- API REST Admin: usando a API REST Admin para controlar o Apache APISIX, que só permite acesso 127.0.0.1 por padrão, você pode modificar o campo
allow_admin
em conf/config.yaml
para especificar uma lista de IPs que têm permissão para chamar a API Admin . Além disso, observe que a API Admin usa autenticação de chave para verificar a identidade do chamador. - Registradores externos: exporte logs de acesso para ferramentas externas de gerenciamento de logs. (HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Alibaba Cloud Logging (SLS), Google Cloud Logging, Splunk HEC Logging, File Logger, SolarWinds Loggly Logging, TencentCloud CLS).
- ClickHouse: envia logs para ClickHouse.
- Elasticsearch: envia logs para o Elasticsearch.
- Datadog: envia métricas personalizadas para o servidor DogStatsD, vem junto com o agente Datadog, através do protocolo UDP. DogStatsD basicamente é uma implementação do protocolo StatsD que coleta as métricas customizadas para o agente Apache APISIX, agrega-as em um único ponto de dados e as envia para o servidor Datadog configurado.
- Gráficos do Helm
- HashiCorp Vault: oferece suporte à solução de gerenciamento de segredos para acessar segredos do armazenamento seguro do Vault em um ambiente de baixa confiança. Atualmente, chaves RS256 (pares de chaves públicas-privadas) ou chaves secretas podem ser vinculadas do vault no plugin de autenticação jwt-auth usando o recurso APISIX Secret.
Altamente escalável
- Plug-ins personalizados: Permite conectar fases comuns, como
rewrite
, access
, header filter
, body filter
e log
, também permite conectar o estágio balancer
. - O plugin pode ser escrito em Java/Go/Python
- O plug-in pode ser escrito com Proxy Wasm SDK
- Algoritmos de balanceamento de carga personalizados: você pode usar algoritmos de balanceamento de carga personalizados durante a fase
balancer
. - Roteamento personalizado: Apoie os usuários na implementação de algoritmos de roteamento.
Suporte multilíngue
- Apache APISIX é um gateway multilíngue para desenvolvimento de plugins e fornece suporte via
RPC
e Wasm
. - A forma RPC é a forma atual. Os desenvolvedores podem escolher o idioma de acordo com suas necessidades e após iniciar um processo independente com o RPC, ele troca dados com o APISIX através da comunicação RPC local. Até o momento, APISIX tem suporte para Java, Golang, Python e Node.js.
- O Wasm ou WebAssembly, é uma forma experimental. APISIX pode carregar e executar bytecode Wasm por meio do plugin APISIX wasm escrito com o Proxy Wasm SDK. Os desenvolvedores só precisam escrever o código de acordo com o SDK e depois compilá-lo em um bytecode Wasm que é executado em Wasm VM com APISIX.
Sem servidor
- Funções Lua: Invoque funções em cada fase do APISIX.
- AWS Lambda: a integração com o AWS Lambda funciona como um upstream dinâmico para fazer proxy de todas as solicitações de um URI específico para o endpoint do gateway de API da AWS. Suporta autorização via chave API e segredo de acesso AWS IAM.
- Azure Functions: integração perfeita com o Azure Serverless Function como um upstream dinâmico para fazer proxy de todas as solicitações de um URI específico para a nuvem do Microsoft Azure.
- Apache OpenWhisk: Integração perfeita com Apache OpenWhisk como um upstream dinâmico para fazer proxy de todas as solicitações de um URI específico para seu próprio cluster OpenWhisk.
Comece
Instalação
Consulte a documentação de instalação.
Começando
O guia de primeiros passos é uma ótima maneira de aprender o básico do APISIX. Basta seguir as etapas em Primeiros passos.
Além disso, você pode seguir a documentação para experimentar mais plug-ins.
API de administração
Apache APISIX fornece REST Admin API para controlar dinamicamente o cluster Apache APISIX.
Desenvolvimento de plug-ins
Você pode consultar o guia de desenvolvimento de plugins e um exemplo de implementação de código de plugin example-plugin
. Ler o conceito do plugin ajudaria você a aprender mais sobre o plugin.
Para obter mais documentos, consulte o site de documentação do Apache APISIX
Referência
Usando o servidor de oito núcleos da AWS, o QPS do APISIX atinge 140.000 com latência de apenas 0,2 ms.
O script de benchmark foi de código aberto, bem-vindo para tentar contribuir.
APISIX também funciona perfeitamente no AWS graviton3 C7g.
Histórias de usuários
- Plataforma Europeia eFactory: API Security Gateway – Usando APISIX na Plataforma eFactory
- Software do sistema de referência Copernicus
- Mais histórias
Quem usa API Gateway APISIX?
Uma grande variedade de empresas e organizações utilizam APISIX API Gateway para pesquisa, produção e produtos comerciais, abaixo estão algumas delas:
- Airwallex
- Bilíbili
- TEVC
- Plataforma Europeia eFactory
- Sistema Europeu de Referência Copernicus
- Geely
- HONRA
- Horizonte Robótica
- iQIYI
- Lenovo
- NASAJPL
- Nayuki
- OPPO
- QingCloud
- Swisscom
- Jogo Tencent
- Viajante
- vivo
- Sina Weibo
- WeCity
- WPS
- XPENG
- Zoom
Logotipos
- Logotipo do Apache APISIX (PNG)
- Fonte do logotipo Apache APISIX
Agradecimentos
Inspirado em Kong e Orange.
Licença
Licença Apache 2.0