Apache APISIX 3.0: 11 Destaques do Gateway de API Open Source

Ming Wen

Ming Wen

September 22, 2022

Products

O gateway de API de código aberto Apache APISIX versão 3.0 está chegando! Selecionamos 11 recursos essenciais para dar uma breve visão geral.

O API Gateway tem atuado como um componente essencial há muito tempo. Ele tem se comprometido a fornecer várias funcionalidades, como limitação de taxa, autenticação (por exemplo, Usar Keycloak para proteger APIs) e observabilidade no nível de negócios.

API Gateway Apache APISIX

O Apache APISIX nasceu para ajudar as empresas a resolver novos problemas em ambientes de nuvem nativa e microsserviços. Por exemplo, ele fornece dimensionamento automático do tráfego de negócios por meio do recurso totalmente dinâmico e uma única modificação para alcançar o gerenciamento de cluster de forma mais conveniente.

Portanto, no design arquitetônico do APISIX, o plano de dados e o plano de controle são separados para alcançar a dinâmica total e o gerenciamento de cluster, o que é principalmente realizado pelos componentes do etcd.

Arquitetura do Apache APISIX

O APISIX armazena e gerencia configurações relacionadas a rotas e plugins no etcd. Como mostrado na figura acima, as configurações da Admin API (Plano de Controle) são armazenadas no etcd, enquanto o plano de dados à esquerda monitora principalmente as mudanças no etcd. O plano de dados pode observar rapidamente as mudanças sem precisar modificar arquivos de configuração.

Mas apenas resolver esses problemas não é suficiente. Como um middleware que recebe solicitações tanto do upstream quanto do downstream, o gateway de API desempenha uma posição crucial na arquitetura empresarial como a entrada de tráfego e a conexão entre as camadas de serviço. O papel do gateway de API difere dos bancos de dados que apenas recebem solicitações do nível de negócios do usuário.

Além dos requisitos de nível de negócios, os gateways de API também têm requisitos de personalização e integração. Então, como tornar o desenvolvimento personalizado mais fácil para os desenvolvedores ao usar o APISIX é outro ponto de dor significativo que o APISIX resolve, diminuindo o limiar para os desenvolvedores codificarem.

No APISIX, os plugins são desenvolvidos principalmente através de Lua, e o LuaJIT (um compilador Just-In-Time para Lua) é usado para garantir que o desempenho do código compilado seja bom o suficiente.

Se você não estiver familiarizado com Lua, pode usar o Plugin Runner, desenvolvendo plugins do APISIX usando as linguagens de programação com as quais você está familiarizado. Também incorporamos Wasm no APISIX, e você pode utilizar o Wasm para compilar bytecode Wasm para rodar no APISIX. Como resultado, os usuários podem usar Lua, Go, Python, Wasm, etc., para criar plugins personalizados no APISIX.

Graças à arquitetura e ao desempenho superior do APISIX, o crescimento global de usuários do APISIX superou em muito as expectativas nos três anos desde o seu início. Por exemplo, grandes empresas de tecnologia como WPS, Sina Weibo e iQiyi são usuários empresariais que lidam com dezenas de bilhões de solicitações de API diariamente. Além disso, instituições de pesquisa científica como a NASA e a European Factory Platform estão usando o APISIX.

11 Novos Destaques do APISIX 3.0

O APISIX propôs um novo Roteiro 3.0 no início de 2022. Na versão 3.0, suas iterações e atualizações se concentrarão na usabilidade e no ecossistema.

Roteiro do Apache APISIX 3.0

O APISIX 3.0 foi oficialmente lançado no final de outubro de 2022. Vamos dar uma visão geral dos novos e emocionantes destaques!

1. Suporte Total ao ARM64

O ARM64 se tornou uma seleção de arquitetura de servidor muito popular para fabricantes de nuvem. Desde AWS Graviton, GCP Tau T2A até o Huawei Kunpeng e outros produtos, podemos ver que vários fabricantes de nuvem começaram a lançar servidores baseados na arquitetura Arm. O gráfico a seguir mostra o desempenho de teste de estresse do APISIX em servidores populares baseados em Arm:

Benchmark do Apache APISIX

De acordo com os dados atuais, o desempenho dos servidores baseados em Arm é ligeiramente melhor do que o desempenho do x86. Para se conformar com a tendência tecnológica da época, o APISIX também realizou testes de regressão CI abrangentes no ARM64 para garantir que os usuários ainda possam executar várias funções sem problemas ao rodar o APISIX na arquitetura Arm.

2. Plano AI

O Apache APISIX adiciona um plano AI na versão 3.0, melhorando o desempenho em 30% (medido por QPS sob teste de estresse). O plano AI otimizaria dinamicamente a configuração do plano de dados, utilizando dados abrangentes, como as configurações dos usuários em rotas e plugins, bem como métricas de log. Por exemplo, os três cenários a seguir podem ser automaticamente otimizados pelo plano AI:

  1. Quando o requisito de correspondência é simples (por exemplo, contendo apenas uri ou host), o cache é ativado para acelerar o processo de correspondência de rotas.
  2. Se não houver plugin, apenas o código relacionado ao upstream seria executado.
  3. Se houver apenas um nó upstream e nenhuma outra opção de configuração estiver ativada, o upstream seria configurado de forma leve.

O plano AI traz novas possibilidades para o processamento de tráfego. No futuro, um aquecimento automático de serviços upstream e detecção de ameaças de segurança podem ser processados através do plano AI.

3. Adição do Cliente gRPC

Na versão 3.0, o Apache APISIX suportará um novo módulo core.grpc. No entanto, se você estiver familiarizado com NGINX e OpenResty, saberá que o suporte deles ao gRPC é bastante limitado, fornecendo apenas recursos básicos como proxy reverso ou balanceamento de carga.

O APISIX já implementou a transcodificação entre os protocolos gRPC e HTTP na versão atual 2.x. Na versão 3.0, o Apache APISIX adicionará um novo cliente gRPC para permitir que os desenvolvedores chamem diretamente serviços gRPC de terceiros sem a necessidade de introduzir componentes adicionais ou exigir que os provedores de serviços usem interfaces HTTP diferentes, tornando o processo muito mais simples.

4. Redesenho da Admin API

Ao usar o APISIX hoje, você pode perceber que o corpo da resposta do APISIX está misturado com muitos dados sem significado, como alguns valores de retorno do etcd que são passados diretamente para o cliente sem qualquer ajuste. Além disso, o design arquitetônico de todo o corpo da resposta não é ideal, com muitos campos redundantes.

Na versão 3.0 do APISIX, a estrutura do corpo da resposta foi aprimorada. Além disso, o novo design torna o formato geral da solicitação e o corpo de retorno mais RESTful, facilitando o uso da versão mais recente da Admin API pelos usuários. Claro, esse processo também permite que você defina qual versão da Admin API usar por meio de parâmetros, libertando os usuários do medo de atualizar para versões incompatíveis.

5. Separação do Plano de Dados (DP) e do Plano de Controle (CP)

O APISIX sofreu várias vulnerabilidades relacionadas à segurança nos últimos dois anos. A causa raiz da maioria das vulnerabilidades é que o DP e o CP são implantados juntos no modo de implantação padrão. Portanto, uma vez que uma vulnerabilidade de segurança existe no plano de dados, um invasor pode invadir diretamente o CP através do DP, afetando todos os outros DPs.

Portanto, na versão 3.0, o modo de implantação é suportado, e o modo de implantação padrão é traditional, onde o DP e o CP são implantados juntos. Claro, o novo modo de implantação recomenda que você defina o atributo como data_plane ou control_plane para separá-los.

Quando eles estão separados, não apenas os riscos de segurança mencionados acima podem ser resolvidos, mas as iterações de função no DP e no CP também são mais gerenciáveis sem afetar um ao outro.

6. Melhor Suporte à Descoberta de Serviços

Na versão atual, o APISIX suporta a integração de muitos componentes de descoberta de serviços, como Apache ZooKeeper, Consul, Nacos, e assim por diante. Mas, no momento, essas integrações são todas feitas no plano de dados. Uma vez que você tem muitos nós no DP, isso colocará muita pressão nos seguintes componentes de descoberta de serviços. Ao mesmo tempo, no ambiente de produção real dos usuários, eles desejam uma integração simples como Consul KV ou integração DNS e integração completa de funções como verificações de saúde.

Portanto, no APISIX 3.0, adicionamos uma camada de abstração ao adicionar um subprojeto APISIX-SEED para alcançar o suporte à descoberta de serviços no nível do plano de controle e reduzir a pressão no componente de descoberta de serviços.

Apache APISIX com Descoberta de Serviços

7. Adição do Framework xRPC

O TCP Proxy é suportado na versão atual do APISIX, mas há momentos em que um proxy de protocolo TCP puro não é suficiente. Os usuários precisam de um proxy para protocolos de aplicativos específicos, como Redis Proxy, Kafka Proxy, etc., porque algumas funções só podem ser implementadas após a codificação e decodificação do protocolo.

Portanto, na versão 3.0, o APISIX implementa um framework de extensão de protocolo de camada de transporte chamado xRPC que permite que os desenvolvedores personalizem protocolos de aplicativos específicos. Com base no xRPC, os desenvolvedores podem codificar e decodificar solicitações e respostas através de códigos Lua e, em seguida, realizar injeção de falhas, relatórios de log e roteamento dinâmico com base na compreensão do conteúdo do protocolo.

Com base no framework xRPC, o APISIX pode fornecer implementações de proxy para vários protocolos de aplicativos principais. Ao mesmo tempo, os usuários também podem suportar seus próprios protocolos de aplicativos baseados em TCP privados com base nesse framework, permitindo que tenham granularidade precisa e controle de camada de aplicativo de ordem superior semelhante ao proxy de protocolo HTTP. Além disso, em cima de diferentes protocolos, alguns fatores comuns podem ser abstraídos para implementar recursos relacionados a plugins, de modo que outros protocolos possam compartilhar esses recursos.

8. Suporte a Mais Observabilidade em Protocolos de Camada de Transporte

O APISIX sempre investiu pesadamente no suporte à observabilidade, suportando quase todos os componentes de observabilidade, como Zipkin, Apache SkyWalking, Datadog, e muito mais. Vários componentes de log também são suportados, mas a maioria é realizada na camada de aplicativo.

O Apache APISIX adicionará mais suporte à observabilidade na camada de transporte na versão 3.0. Por exemplo, o suporte para Prometheus e vários logs foi adicionado, permitindo que os usuários observem facilmente os problemas de tráfego na camada de aplicativo e verifiquem o status de operação do tráfego na camada de transporte.

9. Integração com a Especificação OpenAPI

A API é um elemento que envolve todo o ciclo de vida de desenvolvimento, desde o design até a codificação, teste e implantação. No APISIX 3.0, o Apache APISIX suportará a especificação padrão OpenAPI 3.0.

Portanto, se você gerencia as APIs em software de design e teste de API, é muito simples gerenciar e manter os dados no APISIX exportando e importando-os. Ao mesmo tempo, várias APIs no APISIX também podem ser enviadas através da especificação OpenAPI 3.0 e, em seguida, importadas para outros sistemas para uso.

Além disso, o APISIX 3.0 também suporta formatos personalizados relacionados ao Postman (Postman Collection Format v2), permitindo a transferência de dados entre os dois, tornando a integração mais fácil.

10. Suporte Total ao Gateway API e Service Mesh

O suporte ao Gateway API começou no APISIX Ingress Controller, e quase todas as configurações do Gateway API são suportadas na versão mais recente 1.5.

Nesse caso, o APISIX Ingress pode ser configurado usando o Gateway API, o que significa que você pode alternar entre diferentes planos de dados. Até o final deste ano, o APISIX Ingress terá suporte completo para o Gateway API e recursos adicionais de camada de transporte e aplicativo.

Diferente da maioria das soluções de service mesh, a solução de service mesh do APISIX tem vantagens no plano de dados (devido ao alto desempenho do próprio APISIX). Então, na seleção do plano de controle, esperamos que seja compatível com algumas soluções principais da comunidade. Finalmente, usando o protocolo xDS para integrar com o Istio e escrevendo a configuração obtida no centro de configuração xDS do APISIX, as regras de roteamento específicas são geradas pelo APISIX para completar as solicitações de roteamento correspondentes.

Essa solução não apenas torna todo o service mesh mais leve, mas também torna o desenvolvimento personalizado e a migração mais convenientes com a alta escalabilidade do APISIX.

11. Integração com Mais Ecossistemas

Além do padrão OpenAPI mencionado acima, muitos plugins de ecossistema serão adicionados na versão 3.0, como OpenFunction, ClickHouse, Elasticsearch, SAML, CAS, etc., para integrar mais suporte a autenticação, segurança e observabilidade.

Um dos plugins interessantes, workflow, é usado para agendamento de tráfego: podemos fazer algum processamento granular no nível de controle de tráfego.

curl http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "uri":"/hello/*",
  "plugins":{
    "workflow":{
      "rules":[
        {
          "case": [
            ["uri", "==", "/hello/rejected"]
          ],
          "actions": [
            [
              "return",
              {"code": 403}
            ]
          ]
        },
        {
          "case": [
            ["uri", "==", "/hello/v2/appid"]
          ],
          "actions": [
            [
              "limit-count",
              {
                "count": 2,
                "time_window": 60,
                "rejected_code": 429
              }
            ]
          ]
        }
      ]
    }
  },
  "upstream": {
    "type": "roundrobin",
    "nodes": {
      "127.0.0.1:1980": 1
    }
  }
}'

Por exemplo, realizar uma ação específica quando a condição A for verdadeira, realizar outra ação quando a condição B for verdadeira, etc. Dessa forma, os usuários podem agendar vários tráfegos de negócios de forma mais conveniente.

Comece com o Apache APISIX 3.0

Você já pode conferir o APISIX 3.0 na página de lançamentos do GitHub e na página de downloads!

O APISIX cresceu muito desde o início até a versão 3.0. Um projeto de código aberto pode não ser julgado apenas pelo desempenho e funcionalidade, mas pela perspectiva dos usuários, desenvolvedores e empresas para considerar se eles podem usar o produto para resolver seus pontos de dor atuais de forma rápida e eficaz.

Os destaques e novos recursos mencionados neste artigo foram todos criados através da comunidade de código aberto. O Apache APISIX se tornou mais vibrante ao receber feedback de diferentes desenvolvedores e usuários empresariais. Se você quiser se juntar à vibração, confira a comunidade aqui!

Tags: