A maneira mais eficiente de redirecionar logs de web beacons para o Apache Flume?

1

A configuração

Eu configurei um servidor Nginx simples que registra (em um formato JSON), que é então enviado para um bucket S3 com o Apache Flume. Tudo o que o servidor Nginx faz é responder com um pixel de rastreamento do web beacon e gravar no arquivo de log. Tudo está legal até agora.

O problema

No entanto, seria bom lidar com algumas outras etapas de processamento neste nível do pipeline:

  1. Converter parâmetros de string de consulta em JSON real nos registros de eventos
  2. Defina um cookie UUID para fins de acompanhamento
  3. Incrementar alguns contadores em um banco de dados local (eventualmente, todos os dados serão processados com um Mapear / Reduzir)

Parece que vou precisar de um coletor personalizado do Flume para converter os parâmetros da string de consulta e um back-end para o nginx para definir o cookie e atualizar o banco de dados. Parece muito ineficiente ter vários sistemas em jogo aqui, especialmente ao otimizar o throughput para centenas de solicitações por segundo.

Soluções possíveis

Meu primeiro pensamento foi usar o NodeJS, que poderia lidar com todas essas tarefas (e até mesmo substituir o nginx?), mas eu não gosto que ele seja single-threaded (talvez gerar filhos filhos?).

Então eu pensei que talvez o processamento devesse acontecer no nível do agente Flume, e um programa Java poderia lidar com tudo (qualquer vantagem de desempenho aqui, porque o Flume está sendo escrito em Java?)

Perguntas

  1. Estou indo sobre o caminho certo, ou pensando demais?
  2. Como você recomendaria consolidar tudo em um ou dois processos?
por landons 10.08.2013 / 00:43

0 respostas