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.