Nous définissons actuellement une architecture permettant de collecter les informations de journalisation par les expéditeurs Logstash installés dans différentes machines, d’indexer centralement les données dans un serveur elasticsearch et d’utiliser Kibana en tant que couche graphique. Nous avons besoin d'un système de messagerie fiable entre les expéditeurs de Logstash et elasticsearch pour garantir la livraison. Quels facteurs doivent être pris en compte lors de la sélection de Redis sur RabbitMQ en tant que courtier de données/système de messagerie entre les expéditeurs de Logstash et elasticsearch ou inversement?
Après avoir évalué Redis et RabbitMQ, j'ai choisi RabbitMQ comme courtier pour les raisons suivantes:
En ce qui concerne la mise à l'échelle, RabbitMQ a une implémentation de cluster intégrée que vous pouvez utiliser en plus d'un équilibreur de charge afin d'implémenter un environnement de courtier redondant.
Mon cluster RabbitMQ est-il actif actif ou actif passif?
Passons maintenant au point faible de l’utilisation de RabbitMQ:
Vous pouvez suivre le problème ici: https://github.com/josegonzalez/python-beaver/issues/32
Et vérifiez la demande de tirage ici: https://github.com/josegonzalez/python-beaver/pull/324
Si vous avez plus de questions, n'hésitez pas à laisser un commentaire.
Redis est créé en tant que magasin de données de valeur clé malgré les capacités certaines bases du courtier de messages.
RabbitMQ est créé en tant que courtier de messages. Il a naturellement de nombreuses capacités de courtier de messages.
J'ai fait des recherches sur ce sujet. Si les performances sont importantes et que la persistance ne l’est pas, RabbitMQ est un choix parfait. Redis est une technologie développée dans un but différent.
Voici une liste des pros pour l'utilisation de RabbitMQ sur Redis:
Quelques inconvénients pour utiliser RabbitMQ:
Je me suis demandé la même chose. Les précédentes recommandations de Logstash recommandaient Redis plutôt que RabbitMQ ( http://logstash.net/docs/1.1.1/tutorials/getting-started-centralized ), mais cette section de la note n'existe plus dans la documentation actuelle bien qu'il y ait des notes génériques sur l'utilisation d'un courtier pour traiter les pointes ici https://www.elastic.co/guide/en/logstash/current/deploying-and-scaling.html .
Bien que j'utilise également assez heureusement RabbitMQ, je suis en train d'explorer un courtier Redis, car le protocole AMQP est probablement excessif pour mon cas d'utilisation de la journalisation.
Questions rapides à poser:
Dans le domaine des opinions, j'ai couru Redis en tant que courtier et je l'ai détesté. Bien sûr, cela aurait pu être mon inexpérience avec Redis (ce n’était pas un problème avec le produit lui-même), mais c’était le maillon le plus faible de notre portefeuille et nous avons toujours échoué lorsque nous en avions le plus besoin.