[ad_1]
Com o advento dos microsserviços, as funcionalidades que costumavam ser agrupadas em um único aplicativo web / mule agora estão sendo executadas em diferentes contêineres nas VMs e, às vezes, nos datacenters. Isso representa um enorme desafio para rastrear transações à medida que elas atravessam os limites do contêiner / VM.
Para enfrentar esse desafio, as empresas criam uma solução personalizada de rastreamento distribuído, cara, demorada e cria desafios de manutenção. Várias iniciativas de código aberto foram criadas para resolver isso da Apache Foundation, CNCF e outras que estão em conformidade com o padrão do setor OpenTracing. Embora conceitualmente todos funcionem da mesma maneira, existem algumas nuances em suas implementações. Alguns são escritos em Java para versatilidade e outros em GO para velocidade. Algumas das estruturas populares são Zipkin, Jaeger e Hawkular.
Contents
Benefícios do rastreamento distribuído
O rastreamento distribuído fornece os seguintes benefícios:
- Propagação de contexto distribuído
- Monitoramento de transação distribuída
- Análise de causa raiz
- Análise de dependência de serviço
- Otimização de desempenho / latência
Como isso é diferente do rastreamento baseado em log?
As empresas que investiram pesadamente na agregação de logs e nas plataformas de visualização geralmente usam o rastreamento baseado em mensagens de log. A diferença entre isso e o OpenTracing é que o rastreamento baseado em log é reativo e há um intervalo de tempo significativo entre o momento em que um evento ocorre e o momento em que é refletido no painel. O OpenTracing fornece rastreamento em tempo real.
Estrutura do OpenTracing: Diagrama lógico
O diagrama acima pode ser resumido em duas categorias principais de componentes: componentes do lado do cliente e componentes do lado do servidor.
Componentes do lado do cliente
- Cliente OpenTrace
- Um conector ou um serviço auxiliar que captura rastreamentos e / ou extensões e envia esses eventos para um agente.
- O usuário usará métodos da API OpenTrace, como iniciar, finalizar, injetar, extrair, marcar e registrar para criar eventos de rastreamento
- Agente OpenTrace
- Normalmente, este é co-localizado junto com os microsserviços para obter benefícios ótimos de desempenho.
- Coleta eventos de rastreamento dos clientes OpenTrace e entrega essas mensagens para um coletor quase em tempo real.
Componentes do lado do servidor
- Colecionador
- Essa é uma fila de alta capacidade na memória.
- Como o nome indica, ele coleta as mensagens / eventos do agente e os entrega ao banco de dados Cassandra / ElasticSearch.
- Ele limita as mensagens recebidas de vários coletores e as entrega ao banco de dados.
- Quando o volume de mensagens recebidas é maior que a capacidade de processamento do DB, reduz a frequência de amostragem.
- ElasticSearch Database
- O banco de dados NOSQL armazena os eventos para processamento pelo sistema de consulta OpenTrace.
- Você pode usar o banco de dados Cassandra em vez do ElasticSearch.
- Sistema de consulta
- Isso consulta o banco de dados NOSQL e fornece os dados para a interface do usuário para renderização.
- UI
- A interface do usuário exibe os dados de rastreamento.
Implementando rastreamento distribuído para microsserviços Mule
As alterações específicas da mula estão envolvidas principalmente no lado do cliente. Usamos o padrão sidecar para implementar o rastreamento para microsserviços Mule, onde agrupamos dois contêineres do Docker no mesmo pod. Um deles é o microsserviço Mule, que cria os eventos de rastreamento, extensão e o outro é um contêiner auxiliar que realmente intercepta e delega esses eventos no coletor de rastreamento.
Coisas a considerar:
- Como desenvolvedor de API ou microsserviços, você pode criar um serviço auxiliar Opentrace ou um conector Mule, que será chamado em etapas estratégicas para criar rastreamentos e extensões. Nossa recomendação é criar o conector devido à sua portabilidade.
- Inclua lógica para identificar se um microsserviço é o iniciador ou um participante de um rastreio. Com base nisso, você precisaria criar um novo rastreamento ou ingressar em um rastreamento existente. Isso é importante, pois suas transações abrangem os limites HTTP.
- Embora usado principalmente com o protocolo HTTP / s, o Opentracing também pode ser usado com o JMS. Isso pode ser aproveitado para muitos casos de uso, pois isso expande seu limite de transação.
Deseja explorar mais?
Escreverei mais alguns artigos sobre esse assunto, com foco em:
- Nuances de conceitos de rastreamento
- Como criar seu próprio conector Mule OpenTracing
- Como configurar uma estrutura de rastreamento distribuído de nível de produção
- Uma implementação de ponta a ponta
Para mais recursos para desenvolvedores, consulte a seção de tutoriais do nosso site. Entre em contato comigo com seus comentários na seção de comentários ou no LinkedIn
[ad_2]