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.
No entanto, seria bom lidar com algumas outras etapas de processamento neste nível do pipeline:
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.
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?)
Tags java nginx logging node.js apache-flume