Après avoir évalué Redis et RabbitMQ, j'ai choisi RabbitMQ comme courtier pour les raisons suivantes:
- RabbitMQ vous permet d'utiliser une couche de sécurité intégrée en utilisant des certificats SSL pour crypter les données que vous envoyez au courtier et cela signifie que personne ne reniflera vos données et n'aura accès à vos données organisationnelles vitales.
- RabbitMQ est un produit très stable qui peut gérer de grandes quantités d'événements par seconde et de nombreuses connexions sans être le goulot de la bouteille.
- Dans notre organisation, nous utilisions déjà RabbitMQ et avions de bonnes connaissances internes sur son utilisation et une intégration déjà préparée avec le chef.
En ce qui concerne la mise à l'échelle, RabbitMQ dispose d'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 le plus faible de l'utilisation de RabbitMQ:
- la plupart des expéditeurs Logstash ne prennent pas en charge RabbitMQ mais d'un autre côté, le meilleur, nommé Beaver, a une implémentation qui enverra les données à RabbitMQ sans problème.
- L'implémentation que Beaver a avec RabbitMQ dans sa version actuelle est un peu lente sur les performances (pour mes besoins) et n'a pas été en mesure de gérer le taux de 3000 événements / s à partir d'un serveur et de temps en temps le service a planté.
- En ce moment, je travaille sur un correctif qui résoudra le problème de performance de RabbitMQ et rendra l'expéditeur Beaver plus stable. La première solution est d'ajouter plus de processus qui peuvent s'exécuter simultanément et donneront plus de puissance à l'expéditeur. La deuxième solution consiste à changer Beaver pour envoyer des données à RabbitMQ de manière asynchrone, ce qui devrait théoriquement être beaucoup plus rapide. J'espère que je terminerai la mise en œuvre des deux solutions d'ici la fin de cette semaine.
Vous pouvez suivre le problème ici:
https://github.com/josegonzalez/python-beaver/issues/323
Et vérifiez la demande d'extraction ici:
https://github.com/josegonzalez/python-beaver/pull/324
Si vous avez d'autres questions, n'hésitez pas à laisser un commentaire.