Depois de avaliar o Redis e o RabbitMQ, escolhi o RabbitMQ como nosso corretor pelos seguintes motivos:
- O RabbitMQ permite que você use uma camada interna de segurança usando certificados SSL para criptografar os dados que você está enviando para o corretor e isso significa que ninguém vai farejar seus dados e ter acesso aos seus dados organizacionais vitais.
- RabbitMQ é um produto muito estável que pode lidar com uma grande quantidade de eventos por segundo e muitas conexões sem ser o gargalo.
- Na nossa organização já utilizávamos o RabbitMQ e tínhamos um bom conhecimento interno de utilização e uma integração já preparada com o chef.
Com relação ao escalonamento, o RabbitMQ possui uma implementação de cluster integrada que você pode usar além de um balanceador de carga para implementar um ambiente de broker redundante.
Meu cluster RabbitMQ é ativo ativo ou ativo passivo?
Agora, para o ponto mais fraco de usar RabbitMQ:
- a maioria dos remetentes de Logstash não suporta RabbitMQ, mas por outro lado, o melhor, chamado Beaver, tem uma implementação que enviará dados para RabbitMQ sem problemas.
- A implementação que o Beaver tem com o RabbitMQ em sua versão atual é um pouco lenta no desempenho (para 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 travava.
- No momento, estou trabalhando em uma correção que resolverá o problema de desempenho do RabbitMQ e tornará o remetente do Beaver mais estável. A primeira solução é adicionar mais processos que podem ser executados simultaneamente e darão mais poder ao remetente. A segunda solução é mudar o Beaver para enviar dados ao RabbitMQ de forma assíncrona, o que teoricamente deveria ser muito mais rápido. Espero terminar de implementar as duas soluções até o final desta semana.
Você pode acompanhar o problema aqui:
https://github.com/josegonzalez/python-beaver/issues/323
E verifique a solicitação de pull aqui:
https://github.com/josegonzalez/python-beaver/pull/324
Se você tiver mais perguntas, fique à vontade para deixar um comentário.
O Redis é criado como um armazenamento de dados de valor-chave, apesar de ter alguns recursos básicos do agente de mensagens.
RabbitMQ é criado como um agente de mensagens. Ele tem muitos recursos de agente de mensagens naturalmente.
fonte
Eu tenho feito algumas pesquisas sobre este assunto. Se o desempenho é importante e a persistência não, o RabbitMQ é a escolha perfeita. Redis é uma tecnologia desenvolvida com um propósito diferente.
A seguir está uma lista de profissionais para usar RabbitMQ em vez de Redis:
Alguns contras para usar RabbitMQ:
fonte
Sorted Sets
que permite interações do tipo fila prioritárias. O Redis também pode ser agrupado / fragmentado para enviar mensagens diferentes para filas diferentes em servidores diferentes. Não tenho certeza sobre SSL diretamente para Redis, mas estou olhando para AWS Elasticache e seu Redis 3.2.6 permite criptografia em repouso e em trânsito. Observação: não estou dizendo que Redis é o melhor para esse caso; apenas apontar esses pode não ser motivo para escolher RabbitMQ em vez de Redis.Eu estive me perguntando a mesma coisa. Recomendações anteriores do pessoal do Logstash recomendam Redis em vez do RabbitMQ ( http://logstash.net/docs/1.1.1/tutorials/getting-started-centralized ), no entanto, essa seção das notas não existe mais na documentação atual, embora haja notas genéricas sobre o uso de um corretor para lidar com picos aqui https://www.elastic.co/guide/en/logstash/current/deploying-and-scaling.html .
Embora eu também esteja usando o RabbitMQ com bastante satisfação, estou explorando um corretor Redis, uma vez que o protocolo AMQP é provavelmente um exagero para o meu caso de uso de registro.
fonte
Perguntas rápidas para fazer:
No reino das opiniões, administrei o redis como corretor e odiei. Claro, pode ter sido minha inexperiência com redis (não é um problema com o produto em si), mas era o elo mais fraco do pipeline e sempre falhava quando mais precisávamos.
fonte