Comparativo de Seleção entre API Gateway Apache APISIX e Kong
API7.ai
January 18, 2020
Apache APISIX e Kong são ambos gateways de API de microsserviços de código aberto, então como você os compara e escolhe entre eles?
Esses dois projetos possuem documentação e testes completos, e muitos usuários em produção estão utilizando-os, então não se preocupe com a estabilidade e o desenvolvimento sustentável deles. Este artigo focará nas funcionalidades e desempenho mais diretos e verificáveis, para fazer uma comparação de uma perspectiva diferente.
Esses dois projetos possuem documentação e testes completos, e muitos usuários em produção estão utilizando-os, então não se preocupe com a estabilidade e o desenvolvimento sustentável deles. Este artigo focará nas funcionalidades e desempenho mais diretos e verificáveis, para fazer uma comparação de uma perspectiva diferente.
Funcionalidades | Apache APISIX | KONG |
---|---|---|
Upstream dinâmico | Sim | Sim |
Roteador dinâmico | Sim | Sim |
Verificação de saúde | Sim | Sim |
SSL dinâmico | Sim | Sim |
Proxy L4 e L7 | Sim | Sim |
Opentracing | Sim | Sim |
Plugin personalizado | Sim | Sim |
API REST | Sim | Sim |
CLI | Sim | Sim |
Para uma comparação mais detalhada.
Funcionalidades | Apache APISIX | Kong |
---|---|---|
Pertence a | Apache Software Foundation | Kong Inc. |
Arquitetura Técnica | Nginx + etcd | Nginx + postgres |
Canais de comunicação | Lista de e-mails, grupo Wechat, grupo QQ, GitHub, meetup | GitHub, freenode, fórum |
QPS com CPU single-core (habilitando plugins limit-count e prometheus) | 18000 | 1700 |
Latência | 0.2 ms | 2 ms |
Dubbo | Sim | Não |
Reversão de configuração | Sim | Não |
Rota com TTL | Sim | Não |
Carregamento a quente de plugins | Sim | Não |
Balanceamento de carga e rota personalizados | Sim | Não |
Transcodificação REST API <--> gRPC | Sim | Não |
Tengine | Sim | Não |
MQTT | Sim | Não |
Tempo de efetivação da configuração | Dirigido por eventos, < 1ms | Polling, 5 segundos |
Dashboard | Sim | Não |
IdP | Sim | Não |
Alta disponibilidade do centro de configuração | Sim | Não |
Limite de velocidade para uma janela de tempo especificada | Sim | Não |
Suporte a qualquer variável do Nginx como condição de roteamento | Sim | Não |
Desempenho
Após habilitar os plugins limit-count e prometheus, o desempenho do Apache APISIX é dez vezes maior que o do Kong.
Aqui estão os passos mais detalhados: https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01, Desenvolvedores interessados podem seguir o exemplo para verificar.
Por que o Apache APISIX se destaca?
Aqui, discutimos as razões por trás das diferenças em funcionalidades e desempenho:
-
A complexidade de roteamento do Apache APISIX é O(k), que está relacionada apenas ao comprimento do URI e não ao número de rotas; a complexidade de tempo de roteamento do Kong é O(n), que aumenta linearmente com o número de rotas.
-
A complexidade de tempo de correspondência de IP do Apache APISIX é O(1), o que não causa esgotamento de recursos da CPU com um grande número de verificações de IP.
-
A correspondência de rotas do Apache APISIX aceita todas as variáveis do Nginx como condições e suporta funções personalizadas; outros gateways têm algumas condições embutidas.
-
O Apache APISIX usa etcd como centro de configuração. Não há ponto único. Se uma máquina cair aleatoriamente, o cluster de gateway ainda pode operar normalmente. Outros gateways baseados em bancos de dados relacionais terão um problema de ponto único.
-
A configuração do Apache APISIX pode alcançar todos os nós do gateway em menos de 1 milissegundo, usando o watch do etcd; outros gateways fazem polling no banco de dados regularmente, e geralmente levam 5 segundos para obter a configuração mais recente.
-
Os plugins do Apache APISIX foram cuidadosamente ajustados para manter a latência em milissegundos sob alta pressão.
-
O arranjo único de plugins e a característica de baixo código do Apache APISIX podem reduzir significativamente o limiar de desenvolvimento secundário.