Usar o Apache Kafka para agregação de registos

estou a aprender Apache Kafka do seu tutorial de arranque rápido: http://kafka.apache.org/documentation.html#quickstart até agora, fiz a montagem da seguinte forma. Um nó produtor, onde um servidor web está rodando na porta 8888. Um servidor Kafka (broker), uma instância de consumidores e tratadores de Zookeeper em outro nó. E eu testei o produtor e consumidor de console/arquivo ativado padrão com 3 partições. A configuração é perfeita, e eu sou capaz de ver as mensagens que enviei na ordem que eles criaram (com cada partição).

Agora, quero enviar os registos gerados do servidor web para o Kafka Broker. Estas mensagens serão processadas pelo consumidor mais tarde. Atualmente estou usando o syslog-ng para capturar logs do servidor para um arquivo de texto. Cheguei a três ideias rudimentares sobre como implementar o produtor para usar o kafka para agregação logarítmica

Implementações De Produtores

Primeira Espécie: Ouvir a porta tcp do syslog-ng. Obtenha cada mensagem e envie para o servidor do kafka. Aqui vamos nós. ter dois processos intermédios: produtor e syslog-ng
Segundo Tipo: Usando o syslog-ng como produtor. Deverá encontrar uma forma de enviar mensagens para o servidor do Kafka em vez de escrever num ficheiro. Syslog-ng, o produtor é o processo intermédio.
terceiro tipo: configurar o servidor web como produtor.

Estou correcto no meu pensamento. No último caso, não temos nenhum processo intermédio. Mas duvido que a sua implementação irá afectar o desempenho do servidor. Alguém me pode dizer ... a melhor maneira de usar o Apache Kafka (se os 3 acima não são bons) e me guiar através da configuração apropriada do servidor?..

P. S.: estou a usar o nó.js para o meu servidor web

Obrigado. Sarath

Author: Sarath Chandra Jiguru, 2013-09-17

1 answers

Uma vez que indica que deseja enviar os registos gerados ao Kafka broker, de facto parece que a execução de um processo para ouvir e reenviar as mensagens cria principalmente outro ponto de falha sem valor adicional (a menos que precise de uma capacidade syslog-ng específica).

O Syslog-ng pode enviar mensagens para aplicações externas mear: http://www.balabit.com/sites/default/files/documents/syslog-ng-ose-3.4-guides/en/syslog-ng-ose-v3.4-guide-admin/html/configuring-destinations-program.htmlnão sei se há outras formas de fazer isso.

Para a terceira opção, Não tenho a certeza se o kafka pode ser facilmente integrado no nó.js como requer um produtor de C++ E quando procurei pela última vez, não consegui encontrar. No entanto, uma alternativa fácil poderia ser ter kafka ler o arquivo de log criado pelo servidor e envie esses logs (usando o produtor da consola fornecido com kafka). Esta é geralmente uma boa maneira, uma vez que remove completamente dependências entre kafka e o servidor web (incorporar o produtor em requereria manipulação de erros, configuração, etc). Requer o uso de cauda -- siga e funciona muito bem para nós. Se quiser mais detalhes sobre isso, posso incluí-los também. Ainda assim, você precisa supervisionar a execução do kafka para se certificar de que as mensagens não são perdidas (e fornecer uma opção de recuperação para offline enviar mensagens que falharam). Mas, a coisa boa sobre este método é que não há dependência entre as ferramentas.

Espero que ajude...

Eran

 2
Author: erankl, 2013-09-17 14:52:13