Nachdem ich sowohl Redis als auch RabbitMQ evaluiert hatte, wählte ich RabbitMQ aus folgenden Gründen als unseren Broker:
- Mit RabbitMQ können Sie eine integrierte Sicherheitsebene verwenden, indem Sie SSL-Zertifikate verwenden, um die Daten zu verschlüsseln, die Sie an den Broker senden. Dies bedeutet, dass niemand an Ihren Daten riecht und Zugriff auf Ihre wichtigen Organisationsdaten hat.
- RabbitMQ ist ein sehr stabiles Produkt, das große Mengen von Ereignissen pro Sekunde und viele Verbindungen verarbeiten kann, ohne der Flaschenhals zu sein.
- In unserer Organisation haben wir RabbitMQ bereits verwendet und hatten gute interne Kenntnisse über die Verwendung und eine bereits vorbereitete Integration mit dem Küchenchef.
In Bezug auf die Skalierung verfügt RabbitMQ über eine integrierte Cluster-Implementierung, die Sie zusätzlich zu einem Load Balancer verwenden können, um eine redundante Broker-Umgebung zu implementieren.
Ist mein RabbitMQ-Cluster Aktiv Aktiv oder Aktiv Passiv?
Nun zum schwächeren Punkt der Verwendung von RabbitMQ:
- Die meisten Logstash-Versender unterstützen RabbitMQ nicht, aber der beste namens Beaver verfügt über eine Implementierung, die problemlos Daten an RabbitMQ sendet.
- Die Implementierung, die Beaver mit RabbitMQ in der aktuellen Version hat, ist (für meine Zwecke) etwas langsam und konnte die Rate von 3000 Ereignissen / Sek. Von einem Server nicht verarbeiten, und von Zeit zu Zeit stürzte der Dienst ab.
- Im Moment arbeite ich an einem Fix, der das Leistungsproblem für RabbitMQ löst und den Beaver-Versender stabiler macht. Die erste Lösung besteht darin, mehr Prozesse hinzuzufügen, die gleichzeitig ausgeführt werden können und dem Versender mehr Leistung verleihen. Die zweite Lösung besteht darin, Beaver so zu ändern, dass Daten asynchron an RabbitMQ gesendet werden, was theoretisch viel schneller sein sollte. Ich hoffe, dass ich die Implementierung beider Lösungen bis Ende dieser Woche abschließen werde.
Sie können das Problem hier verfolgen:
https://github.com/josegonzalez/python-beaver/issues/323
Überprüfen Sie die Pull-Anfrage hier:
https://github.com/josegonzalez/python-beaver/pull/324
Wenn Sie weitere Fragen haben, können Sie gerne einen Kommentar hinterlassen.
Redis wird trotz einiger grundlegender Funktionen für den Nachrichtenbroker als Schlüsselwertdatenspeicher erstellt .
RabbitMQ wird als Nachrichtenbroker erstellt. Es hat natürlich viele Message Broker-Funktionen.
quelle
Ich habe zu diesem Thema recherchiert. Wenn Leistung wichtig ist und Ausdauer nicht, ist RabbitMQ die perfekte Wahl. Redis ist eine Technologie, die mit einer anderen Absicht entwickelt wurde.
Im Folgenden finden Sie eine Liste der Profis für die Verwendung von RabbitMQ über Redis:
Einige Nachteile für die Verwendung von RabbitMQ:
quelle
Sorted Sets
prioritätswarteschlangenähnliche Interaktionen. Redis kann auch geclustert / sharded werden, um verschiedene Nachrichten an verschiedene Warteschlangen auf verschiedenen Servern zu senden. Ich bin mir nicht sicher, ob SSL direkt für Redis verfügbar ist, aber ich sehe mir AWS Elasticache an und Redis 3.2.6 ermöglicht die Verschlüsselung im Ruhezustand und während der Übertragung. Hinweis: Redis ist für diesen Fall überhaupt nicht besser. Nur darauf hinzuweisen, ist möglicherweise kein Grund, RabbitMQ Redis vorzuziehen.Ich habe mich das Gleiche gefragt. Frühere Empfehlungen der Logstash-Leute empfehlen Redis gegenüber RabbitMQ ( http://logstash.net/docs/1.1.1/tutorials/getting-started-centralized ), obwohl dieser Abschnitt der Notizen in der aktuellen Dokumentation nicht mehr vorhanden ist, obwohl es ihn gibt Allgemeine Hinweise zur Verwendung eines Brokers zur Behandlung von Spikes finden Sie hier https://www.elastic.co/guide/en/logstash/current/deploying-and-scaling.html .
Während ich RabbitMQ auch recht glücklich benutze, erkunde ich derzeit einen Redis-Broker, da das AMQP-Protokoll für meinen Anwendungsfall der Protokollierung wahrscheinlich zu viel des Guten ist.
quelle
Schnelle Fragen:
Im Bereich der Meinungen habe ich Redis als Broker geführt und es gehasst. Das hätte natürlich meine Unerfahrenheit mit Redis sein können (kein Problem mit dem Produkt selbst), aber es war das schwächste Glied in der Pipeline und scheiterte immer, wenn wir es am meisten brauchten.
quelle