Série de Melhoria da Observabilidade de API (Parte 3): Tracing

March 19, 2024

Technology

Introdução

O que é Rastreamento Distribuído?

No cenário atual da arquitetura de microsserviços e sistemas distribuídos, uma única solicitação frequentemente atravessa vários serviços, cada um contendo diversas etapas de processamento interno. Para garantir a operação eficiente e estável dos sistemas, é essencial compreender o caminho completo e o processamento dessas solicitações. Essa necessidade deu origem à tecnologia de rastreamento distribuído. Ela nos permite obter uma compreensão clara de toda a jornada de uma solicitação, desde o início até a conclusão, incluindo cada serviço pelo qual ela passa, o tempo de processamento de cada serviço e a ocorrência de quaisquer anomalias.

Processo de Utilização de Rastreamento em APIs

Inicialmente, é essencial implantar um agente de rastreamento ou SDK para rastreamento no ponto de entrada de cada serviço, a fim de capturar todas as solicitações. Por meio dos dados de rastreamento, podemos observar claramente o tempo de processamento das solicitações em cada serviço, identificando assim possíveis gargalos de desempenho. O rastreamento distribuído não apenas registra o processamento normal das solicitações, mas também captura quaisquer exceções e erros que ocorram durante o processo. Ao visualizar os dados de rastreamento distribuído, podemos compreender intuitivamente o fluxo das solicitações entre diferentes serviços e componentes.

Rastreamento da API7 Enterprise

Melhorando a Observabilidade - Rastreamento Distribuído

Em relação ao rastreamento distribuído, aqui estão alguns métodos para melhorar a observabilidade das APIs, juntamente com exemplos específicos:

1. Selecionando Ferramentas e Tecnologias de Rastreamento Distribuído Adequadas

Ao escolher ferramentas de rastreamento distribuído, é importante considerar sua stack de tecnologia, requisitos de negócios e complexidade de monitoramento. Zipkin, SkyWalking e OpenTelemetry são soluções populares de rastreamento distribuído, cada uma com suas características únicas.

2. Integrando Rastreamento Distribuído no Desenvolvimento de APIs

Para Zipkin e SkyWalking, a integração no desenvolvimento de APIs pode ser alcançada adicionando as respectivas dependências e configurações. No entanto, para o OpenTelemetry, é necessário criar e gerenciar manualmente o contexto de rastreamento usando sua API.

3. Configurando e Otimizando Sistemas de Rastreamento Distribuído

Zipkin, SkyWalking e OpenTelemetry podem ser personalizados por meio de arquivos de configuração. Parâmetros como taxa de amostragem, configuração de armazenamento de backend e otimização de transmissão de dados podem ser definidos. Além disso, é crucial definir regras de alerta para responder prontamente a eventos excepcionais.

4. Análise e Visualização de Dados

Zipkin, SkyWalking e OpenTelemetry fornecem interfaces de visualização para exibir dados de rastreamento distribuído e métricas de desempenho. Por exemplo, na interface do usuário do Zipkin, é possível pesquisar e visualizar dados de rastreamento específicos para entender o fluxo de solicitações entre diferentes serviços. O painel do SkyWalking oferece uma visão geral do desempenho global e um gráfico de relacionamento de chamadas de serviço. Os dados do OpenTelemetry podem ser importados para várias ferramentas de visualização, como Grafana, para criar painéis e gráficos personalizados.

5. API7 Enterprise Integra Plugins de Rastreamento Distribuído

API7 Enterprise suporta vários plugins de rastreamento, incluindo Zipkin, OpenTracing e SkyWalking. Esses plugins de rastreamento precisam ser vinculados a regras de roteamento ou regras globais. Se não houver requisitos de taxa de amostragem, é recomendável vinculá-los a regras globais para evitar omissões.

Plugins de Observabilidade da API7 Enterprise

Análise de Caso Prático: Melhorando a Observabilidade de APIs de E-commerce

Durante o processo de navegação e compra de produtos em uma plataforma de e-commerce, várias chamadas de API estão envolvidas. Por exemplo, os usuários inicialmente chamam a API do serviço de produtos para recuperar uma lista de produtos, depois selecionam um produto específico e chamam a API do serviço de pedidos para criar um pedido e, finalmente, chamam a API do serviço de pagamento para concluir o pagamento.

Nesse cenário, foi observado que a API do serviço de pedidos frequentemente apresentava atrasos e timeouts durante os períodos de pico, resultando em atrasos e falhas perceptíveis durante o processo de finalização da compra. Para resolver esse problema, a equipe decidiu introduzir a tecnologia de rastreamento distribuído para diagnosticar gargalos de desempenho e otimizar o sistema.

  1. Selecionando Ferramentas de Rastreamento Distribuído: A equipe escolheu o SkyWalking como a ferramenta de rastreamento distribuído devido ao seu suporte a várias linguagens, facilidade de integração e recursos ricos de visualização.

  2. Integrando o SkyWalking: O serviço de pedidos é desenvolvido em Java, e a equipe integrou o Java Agent do SkyWalking ao código do serviço de pedidos. Isso permite que o SkyWalking colete automaticamente dados de rastreamento quando a API do serviço de pedidos é chamada.

  3. Configurando o SkyWalking: A equipe configurou o armazenamento de backend do SkyWalking para o Elasticsearch e definiu taxas de amostragem adequadas para equilibrar o nível de detalhe dos dados de rastreamento e os custos de armazenamento.

  4. Coletando e Analisando Dados de Rastreamento: Durante os períodos de pico, a equipe observou a cadeia de chamadas e as métricas de desempenho da API do serviço de pedidos por meio da interface do usuário do SkyWalking. Eles descobriram que uma chamada específica à API do serviço de estoque de produtos levava significativamente mais tempo durante o processo de criação de pedidos, tornando-se um gargalo de desempenho.

  5. Investigação Detalhada: A equipe examinou detalhadamente os dados de rastreamento da API do serviço de estoque de produtos, incluindo parâmetros de chamada, resultados de retorno e informações de exceção. Eles descobriram que a API executava uma operação complexa de consulta ao banco de dados ao processar produtos específicos, resultando em um aumento no tempo de processamento.

  6. Medidas de Otimização: Para resolver esse problema, a equipe implementou duas medidas de otimização. Primeiro, eles otimizaram as instruções de consulta ao banco de dados para melhorar a eficiência das consultas. Em segundo lugar, implementaram o cache para a API do serviço de estoque de produtos, recuperando os resultados diretamente do cache para produtos frequentemente consultados e que mudam pouco, evitando assim consultas desnecessárias ao banco de dados.

Conclusão

A tecnologia de rastreamento distribuído desempenha um papel crucial na arquitetura de microsserviços e sistemas distribuídos. Ao registrar e visualizar o fluxo de solicitações entre vários serviços, podemos identificar e resolver rapidamente gargalos de desempenho, melhorando a estabilidade e a observabilidade do sistema. Ao selecionar ferramentas de rastreamento distribuído adequadas e integrá-las ao desenvolvimento de APIs, podemos obter insights mais profundos sobre as operações do sistema, melhorando assim a experiência do usuário e a eficiência do sistema.

Blogs Relacionados

Tags: