Como o vivo se integra com o APISIX
November 25, 2022
Visão Geral
Desde maio de 2021, a vivo introduziu o Apache APISIX como seu API Gateway. Após mais de um ano de prática na vivo, o APISIX resolveu muitos pontos problemáticos técnicos e de negócios e foi utilizado em larga escala.
Pontos Problemáticos Antes de Usar o APISIX
-
Gerenciamento Complexo de Cenários de Negócios e Manutenção do Sistema
Devido ao rápido crescimento dos negócios, há diversos cenários e sistemas que os atendem, e a vivo precisava de uma maneira unificada para gerenciá-los.
-
Interação entre o Plano de Dados e o Plano de Controle
Para empresas de médio e grande porte como a vivo, é inesperado que pequenos problemas que ocorrem no plano de dados afetem o plano de controle.
-
Sem Suporte para Recursos Multidimensionais
Projetos diversos levam a vários domínios e URLs. O departamento de negócios precisa pesquisar de acordo com diferentes dimensões de recursos.
-
Impacto Incontrolável de Problemas
Como os projetos da vivo são complexos, o efeito dos problemas encontrados é incontrolável. O uso de alguns plugins complicados intensifica isso.
Ao substituir o NGINX pelo APISIX, a vivo finalmente obteve uma série de conquistas, conforme descrito abaixo.
Conquistas Após Usar o APISIX
-
Alta Disponibilidade
Nenhuma falha grave ocorreu desde que o APISIX foi lançado na vivo, e a disponibilidade do sistema excede 99,99%.
-
Alto Desempenho
Suportando um tráfego online significativo e atendendo a um grande número de serviços, o tráfego de encaminhamento online atual chega perto de um milhão de QPS (Queries-per-second).
-
Recursos Abundantes
Graças aos recursos ricos do APISIX, ele pode cobrir quase todos os cenários comuns de proxy do NGINX. Cerca de 50% dos projetos da vivo foram migrados do NGINX para os clusters do APISIX.
-
Apoiando a Construção e Desenvolvimento de Cloud-Native
O K8s bare metal que suporta a containerização atingiu uma escala de 10.000. Cerca de 40% dos projetos foram migrados de bare metal e máquinas virtuais para a plataforma de contêineres K8s, apoiando e promovendo o progresso da containerização da vivo.
Design do Sistema da Vivo Baseado no APISIX
A seguir, vamos ver o design do sistema da vivo após a adoção do APISIX.
Exibição da Arquitetura Personalizada no APISIX
A partir do diagrama acima, podemos analisar que a vivo:
- Concluiu a construção de gateways de tráfego de Camada 4 e Camada 7, que são suportados pelo APISIX
- Realizou o acesso ao tráfego e a implantação mista de bare metal, máquinas virtuais e contêineres
- Implementou o gerenciamento de clusters do APISIX
- Conectou a plataforma interna de DevOps e os serviços de implantação de negócios para acessar o tráfego de forma rápida e automática
- Melhorou a construção de monitoramento
Melhorias no Gerenciamento de Configuração e Lançamento
Para atender melhor às necessidades reais do departamento de negócios, a vivo realizou uma série de adaptações no APISIX. Abaixo estão algumas dessas adaptações, incluindo alterações no plano de controle, gerenciamento de separação de clusters e encaminhamento de dados.
Alteração no Plano de Controle
O processo completo pode ser o seguinte:
Após a configuração dos dados na plataforma de alterações A6, as informações serão entregues via RPC notify ao ManagerAPI, que foi construído pela vivo com base no APISIX Dashboard de código aberto.
Em seguida, o tráfego será enviado para o apisix-agent
. O APISIX consulta o apisix-agent regularmente através do processo privilegiado para obter tarefas de alteração em lote. Em seguida, o processo privilegiado notifica o worker
através de filas compartilhadas para realizar a alteração na memória.
Enquanto isso, o APISIX informa o apisix-agent
sobre o resultado das tarefas e, em seguida, as entrega ao ManagerAPI. Além disso, a plataforma de alterações A6 pode consultar o ManagerAPI para obter os resultados das tarefas.
O etcd é um destaque do APISIX, permitindo a operação independente dos planos de controle e dados. Considerando a singularidade de sua arquitetura, a vivo descartou o etcd no processo acima. Aqui estão algumas razões.
Devido à diversidade dos projetos da vivo, há vários domínios e URLs. Além disso, os departamentos de negócios precisam consultar diferentes dimensões. Graças à adaptabilidade do APISIX, que não funciona apenas com etcd, mas também com diversos tipos de bancos de dados, a vivo pôde facilmente utilizar bancos de dados como o MongoDB para trabalhar em conjunto com o APISIX.
Além disso, a vivo fez as seguintes contribuições para ser compatível com o Apache APISIX.
-
Desenvolvimento do Componente Agent
Desde maio de 2021, a vivo introduziu o Apache APISIX. Considerando o contexto técnico, a vivo não estava confiante em adotar o APISIX porque não tinha experiência com OpenResty e Lua. Além disso, há muitas tarefas não relacionadas ao encaminhamento, como coleta de logs e manipulação de monitoramento, o que pode aumentar a complexidade de gerenciamento do plano de dados. Consequentemente, a vivo desenvolveu o componente agent para reduzir a complexidade do desenvolvimento.
-
Gravação de Dados no Disco
Para tornar o sistema ajustável e permitir que o plano de dados funcione de forma independente, reduzindo assim a dependência do plano de controle, a vivo escreveu o arquivo de configuração no disco. Quando o APISIX é iniciado, ele suporta a obtenção completa do centro de configuração e também suporta a obtenção direta de recursos de configuração do diretório de arquivos do disco local. Essa maneira melhora drasticamente a independência dos dados e a robustez do sistema. Além disso, é muito intuitivo entender as informações de rota e upstream configuradas no disco, o que é útil para solucionar problemas.
-
Retorno do Resultado da Tarefa de Alteração
Como uma empresa de grande porte, a vivo precisa garantir que as alterações em recursos como roteadores e upstreams possam ser efetivas e bem-sucedidas, e que o sistema possa relatar o erro mesmo que essas alterações falhem. Essa lógica de ACK (Código de Confirmação) garante que os workers do NGINX em uma máquina possam retornar. Quando as tarefas de retorno são bem-sucedidas, todos os workers do APISIX atualizarão as alterações de recursos para a memória relevante.
Gerenciamento de Separação de Clusters
A versão de código aberto do APISIX fornece etcd para todos compartilharem. No entanto, os projetos da empresa são complexos, e os problemas encontrados são incontroláveis. Além disso, é inevitável o uso de plugins complicados, o que afeta o desempenho do sistema.
Portanto, o gerenciamento é feito por separação de clusters para realizar o isolamento da configuração do cluster no APISIX, o que pode:
- Controlar o domínio de falhas e suportar efetivamente a complexidade dos projetos sem afetar outros projetos
- Reduzir efetivamente a carga causada pela camada não de encaminhamento do APISIX quando os nós de contêineres mudam frequentemente
- Reduzir o impacto de carga causado pela verificação de saúde
Aumento do QPS Suportado por HTTPS
De acordo com os requisitos relevantes do Ministério da Indústria e Tecnologia da Informação da China, o tráfego da rede externa deve passar pelo protocolo HTTPS. Como um protocolo de criptografia HTTP baseado em TLS, o HTTPS sobrecarrega a CPU no processo de criptografia e descriptografia.
Quando as configurações de roteamento e outras são as mesmas, o tráfego que o HTTPS pode suportar é cerca de 1/8 - 1/10 do que o HTTP.
Após aplicar o patch no acelerador Intel® QAT (QuickAssist Technology), a vivo entrega o tratamento de descriptografia ao acelerador QAT, o que libera a CPU, aumentando assim o QPS suportado por HTTPS em uma única máquina. Como pode ser visto na figura abaixo, a capacidade de carga HTTPS de uma única máquina é aproximadamente dobrada.
Como a Vivo Combina Negócios com o APISIX
Apoiando o Desenvolvimento de Containerização
Para apoiar o desenvolvimento de containerização, a vivo desenvolveu um controlador de ingress K8s. Abaixo estão algumas de suas funções.
-
Adaptando-se ao mecanismo de alteração de configuração de push assíncrono modificado pela vivo
-
Realizando notificações de processamento de eventos de múltiplos clusters K8s para o APISIX
-
Lidando com cenários de projetos complexos, como:
-
Um servidor com várias portas
-
Quando outros servidores de framework RPC, como Dubbo e gRPC, são conectados ao K8s, é necessário um conjunto unificado de lógica de processamento para notificar o APISIX ou outros frameworks sobre as informações de porta de acordo com as características de configuração dos projetos
- Adaptando-se às necessidades específicas do DevOps interno da empresa e outros cenários de automação, facilitando a implantação rápida e permitindo o tráfego
Ajudando na Migração de Projetos do NGINX para o APISIX
Os projetos da vivo são implantados no cluster NGINX existente e têm sido executados de forma estável por um longo tempo. No entanto, isso traz cargas de trabalho não relacionadas aos negócios e instabilidade aos projetos. Consequentemente, é desafiador realizar a migração. Então, como promover a migração dos projetos para o APISIX?
-
Primeiro, encontrar um projeto de um departamento cooperativo, atender bem ao departamento de negócios para estabelecer um benchmark e fornecer orientação técnica e treinamento
-
Construir um sistema de plano de controle fácil de usar para facilitar o acesso dos negócios e o gerenciamento multidimensional dos departamentos de negócios
-
Fornecer capacidade de conversão automática e configuração básica para converter a configuração do NGINX para a configuração do APISIX
Atualizando o APISIX e Apoiando Sua Versão de Código Aberto
Com base na versão 2.4 do APISIX, a vivo fez alguns ajustes e lançou a nova versão, que foi atualizada para uma versão mais recente no segundo trimestre deste ano.
Por um lado, graças à arquitetura modular do APISIX, é relativamente fácil integrar o código Lua modificado pela vivo ao branch da versão mais recente do APISIX. Por outro lado, a vivo também continua atualizando a seção do OpenResty, com cerca de uma versão por ano. Como a vivo utiliza muitos PATCHs e algumas funções úteis como o QAT, a atualização desse componente é difícil e trabalhosa.
A versão gratuita da comunidade do NGINX tem atualizações lentas e é inativa. A vivo está considerando se deve construir em conjunto com o APISIX. Para reduzir a mão de obra necessária para fazer testes de sistema relacionados, a vivo adotou o Robot Framework, um framework genérico de automação de testes para testes de integração de sistema. Eles estão promovendo os componentes relevantes para a cobertura de testes unitários e o modelo de desenvolvimento de TDD (Desenvolvimento Orientado a Testes).
Planejamento Futuro da Vivo
No próximo ano, a vivo planeja estender o APISIX como um gateway de tráfego para um gateway de API, utilizando suas vantagens de limitação de taxa, autenticação, interrupção de circuito, etc. Considerando a combinação do APISIX com o DPDK-NGINX, a vivo também cultivará pessoal técnico e se juntará ao estabelecimento da comunidade. Além disso, consolidará as habilidades básicas para estabelecer uma boa base, construindo governança de tráfego e serviços.
Bem-vindo a saber mais sobre o Apache APISIX.
Você pode entrar em contato conosco em https://api7.ai/contact.