1 pontos por hueypark 3 시간 전 | Ainda não há comentários. | Compartilhar no WhatsApp
  • A Airbridge faz o pareamento em tempo real de eventos como cliques em anúncios, instalações e compras, então é importante não apenas processar os eventos rapidamente, mas também processá-los na ordem necessária e evitar perdas e duplicações.
  • Antes, as mensagens do Kafka eram trazidas em micro-batches e processadas sequencialmente por tipo de evento.
    • Era fácil controlar a ordem, mas enquanto se esperava o processamento dos eventos anteriores, outros workers ficavam ociosos.
    • Quando diferenças de velocidade de processamento entre workers se somavam a hot partitions, a velocidade de processamento estagnava mesmo com aumento de servidores.
  • Para resolver isso, foi projetado o Project Differential.
    • Os micro-batches foram eliminados, e Consumers por tipo de evento leem de forma independente o mesmo topic do Kafka.
    • A garantia de ordem é feita por partition, e não por todo o topic, configurando para que os eventos do mesmo fluxo de usuário cuja ordem importa entrem, sempre que possível, na mesma partition.
    • O Consumer seguinte não pode ultrapassar a posição de processamento do Consumer anterior, mantendo uma distância de segurança com base em offset ou event time.
    • Mensagens que o Consumer anterior não processa são repassadas ao próximo Consumer para reaproveitamento, e quando o buffer enche, o sistema muda para o Polling Mode, lendo o Kafka diretamente.
  • Internamente, há ConsumerSuite/PartitionedConsumerChain por partition, e o LimitedEventProcessor controla para não ultrapassar o checkpoint do Consumer anterior.
    • O CommitManager gerencia para que, mesmo com buffering e processamento assíncrono, apenas offsets contínuos realmente concluídos sejam commitados no Kafka.
  • Em operação de teste, foi confirmado que o sistema funciona sem perda nem duplicação de eventos, e a velocidade de processamento melhorou mais de 10 vezes em comparação com o método anterior de micro-batches.
  • Em vez de criar uma ordem global completa, este é um caso de manter, em best effort, a ordem realmente necessária ao negócio enquanto se garante vazão.
  • No futuro, estão sendo avaliadas simplificação da estrutura, adaptive flow control para lidar com encerramentos de Spot Instances e melhorias de arquitetura para reduzir o próprio processamento sequencial.

Ainda não há comentários.

Ainda não há comentários.