Redis Vs RabbitMQ como um corretor de dados / sistema de mensagens entre Logstash e elasticsearch
estamos a definir uma arquitectura para recolher informações de registo por Carregadores de Logstash que estão instalados em várias máquinas e indexar os dados num servidor elasticsearch centralmente e usar o Kibana como camada gráfica. Precisamos de um sistema de mensagens fiável entre os carregadores de Logstash e a busca elastica para garantir a entrega. Que fatores devem ser considerados ao selecionar Redis sobre RabbitMQ como um sistema de corretagem de dados entre os carregadores de Logstash e a pesquisa Elastic ou vice-versa?
5 answers
- o RabbitMQ permite-lhe usar uma camada de segurança incorporada, usando certificados SSL para cifrar os dados que está a enviar para o corretor e significa que ninguém vai cheirar os seus dados e ter acesso aos seus dados organizacionais vitais.
- RabbitMQ é um produto muito estável que pode lidar com grandes quantidades de eventos por segundos e muitas conexões sem ser o gargalo. Na nossa organização, já utilizávamos RabbitMQ e tínhamos bons conhecimentos internos sobre a sua utilização e uma integração já preparada com o chef.
Em relação à escala, o RabbitMQ tem uma implementação embutida em cluster que você pode usar, além de um balancer de carga, a fim de implementar um ambiente de corretor redundante.
O meu aglomerado RabbitMQ está activo ou activo passivo?
Agora para o ponto mais fraco de usar RabbitMQ:- a maioria dos carregadores de Logstash não suportam RabbitMQ, mas por outro lado, o melhor, chamado Beaver, tem uma implementação que irá enviar dados para RabbitMQ sem problemas.
- a implementação que o Beaver tem com o RabbitMQ na sua versão actual é um pouco lenta no desempenho (para os meus propósitos) e não foi capaz de lidar com a taxa de 3000 eventos/s de um servidor e de vez em quando o serviço estoirou. Neste momento, estou a trabalhar numa solução que ... resolva o problema de desempenho do RabbitMQ e torne o carregador de castores mais estável. A primeira solução é adicionar mais processos que podem ser executados simultaneamente e dar mais energia ao expedidor. A segunda solução é mudar Beaver para enviar dados para RabbitMQ assíncronamente o que teoricamente deve ser muito mais rápido. Espero terminar a implementação de ambas as soluções até o final desta semana.
O Redis é criado como um armazém de dados de valor-chave, apesar de ter algumas capacidades básicas de mediação de Mensagens.
O RabbitMQ é criado como intermediário de mensagens. Tem muitas capacidades de corretor de mensagens naturalmente.Segue - se a minha lista de profissionais para usar RabbitMQ sobre Redis:
- o RabbitMQ usa o protocolo AMQP que pode ser configurado para usar SSL, camada adicional de segurança.
- RabbitMQ leva aproximadamente 75% do tempo que Redis leva para aceitar mensagem.
- o RabbitMQ suporta prioridades para mensagens, que podem ser usadas pelos trabalhadores para consumir mensagens de alta prioridade em primeiro lugar. Não há hipótese de perder a mensagem se algum trabalhador colidir depois de consumir a mensagem, o que não é o caso da Redis.
- RabbitMQ tem um bom sistema de roteamento para direcionar mensagens para diferentes filas.
Alguns contras para usar RabbitMQ:
- RabbitMQ pode ser um pouco difícil de manter, difícil de depurar falha.
- o nome do nó ou as flutuações do nó-ip podem causar perda de dados, mas se forem bem geridas, as mensagens duradouras podem resolver o problema.
Enquanto eu também estou a usar RabbitMQ bastante felizmente, estou a explorar um corretor Redis, uma vez que o protocolo AMQP é provavelmente um exagero para o meu caso de utilização de madeira.
Perguntas rápidas a fazer:
-
Porque precisas de um corretor? Se você estiver usando o logstash ou logstash-forwarder para ler arquivos desses servidores, ambos irão abrandar se o pipeline ficar Congestionado.
Tem alguma experiência em administrar coelho ou redis? Sendo todas as coisas iguais, a ferramenta que você sabe usar é a melhor ferramenta.