Efter at have evalueret både Redis og RabbitMQ valgte jeg RabbitMQ som vores mægler af følgende grunde:
- RabbitMQ giver dig mulighed for at bruge et indbygget sikkerhedslag ved at bruge SSL-certifikater til at kryptere de data, du sender til mægleren, og det betyder, at ingen vil snuse til dine data og have adgang til dine vitale organisationsdata.
- RabbitMQ er et meget stabilt produkt, der kan håndtere store mængder hændelser pr. sekund og mange forbindelser uden at være flaskehalsen.
- I vores organisation brugte vi allerede RabbitMQ og havde god intern viden om brugen af det og en allerede forberedt integration med kokken.
Med hensyn til skalering har RabbitMQ en indbygget klyngeimplementering, som du kan bruge ud over en load balancer for at implementere et redundant mæglermiljø.
Er min RabbitMQ-klynge Active Active eller Active Passive?
Nu til det svagere punkt ved at bruge RabbitMQ:
- de fleste Logstash-afsendere understøtter ikke RabbitMQ, men på den anden side har den bedste, kaldet Beaver, en implementering, der sender data til RabbitMQ uden problemer.
- Implementeringen, som Beaver har med RabbitMQ i dens nuværende version, er lidt langsom med hensyn til ydeevne (til mit formål) og var ikke i stand til at håndtere hastigheden på 3000 hændelser/sek. fra én server, og fra tid til anden gik tjenesten ned.
- Lige nu arbejder jeg på en rettelse, der vil løse ydeevneproblemet for RabbitMQ og gøre Beaver-afsenderen mere stabil. Den første løsning er at tilføje flere processer, der kan køre samtidigt og vil give afsenderen mere kraft. Den anden løsning er at ændre Beaver til at sende data til RabbitMQ asynkront, hvilket teoretisk set burde være meget hurtigere. Jeg håber, at jeg er færdig med at implementere begge løsninger inden udgangen af denne uge.
Du kan følge problemet her:https://github.com/josegonzalez/python-beaver/issues/323
Og tjek pull-anmodningen her:https://github.com/josegonzalez/python-beaver/pull/324
Hvis du har flere spørgsmål, er du velkommen til at efterlade en kommentar.