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?

Author: Salindaw, 2015-04-09

5 answers

Depois de avaliar tanto o Redis como o RabbitMQ, escolhi o RabbitMQ como nosso corretor pelas seguintes razões:
  1. 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.
  2. RabbitMQ é um produto muito estável que pode lidar com grandes quantidades de eventos por segundos e muitas conexões sem ser o gargalo.
  3. 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:
  1. 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.
  2. 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.
  3. 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.
Pode acompanhar a questão. aqui: https://github.com/josegonzalez/python-beaver/issues/323 E verifique o pedido de retirada aqui.: https://github.com/josegonzalez/python-beaver/pull/324 Se tiver mais perguntas, deixe um comentário.
 56
Author: Tom Kregenbild, 2017-05-23 12:34:44

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.
 32
Author: Ferhat, 2016-11-11 08:17:40
Tenho feito algumas pesquisas sobre este tema. Se o desempenho é importante e a persistência não é, RabbitMQ é uma escolha perfeita. Redis é uma tecnologia desenvolvida com uma intenção diferente.

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.
 20
Author: Arun Reddy, 2016-12-14 07:51:58
Tenho estado a pensar na mesma coisa. Recomendações anteriores, o Logstash pessoas recomendam Redis sobre RabbitMQ (http://logstash.net/docs/1.1.1/tutorials/getting-started-centralized), no entanto, que a secção das notas já não existe na documentação atual, embora haja genérico notas sobre a utilização de um agente para lidar com picos aqui https://www.elastic.co/guide/en/logstash/current/deploying-and-scaling.html.

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.

 4
Author: opennomad, 2015-07-20 16:17:44

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.
No reino das opiniões, tornei-me corretor e odiei. Claro, pode ter sido a minha inexperiência. com redis (não um problema com o produto em si), mas era o elo mais fraco no gasoduto e sempre falhou quando mais precisávamos dele.
 3
Author: Alain Collins, 2015-07-08 00:10:00