2016-08-08 11 views
0

Momentan arbeite ich an einem verteilten Testausführungs- und Berichtssystem. Ich plane Redis PUB/SUB als Nachrichtenwarteschlangen- und Nachrichtenverteilungssystem zu verwenden.Redis PUB/SUB und hohe Verfügbarkeit

Ich bin neu in Redis, also versuche ich, so viele Dokumente wie möglich zu lesen und damit herumzuspielen. Eines der wichtigsten Themen ist die hohe Verfügbarkeit. Wie ich schon sagte, ich bin kein Experte, aber ich kenne die möglichen Optionen - Sentinel, Replikation, Clustering usw.

Was ist nicht klar für mich ist, wie die Pub/Sub-Funktion und die HA-Optionen sind miteinander verwandt. Was ist die beste Vorgehensweise, um ein zuverlässiges Messaging-System mit Redis aufzubauen? Mit reliable meine ich, wenn mein Redis Message Broker unten ist, sollte es eine Art von Backup-Knoten (ein Slave?) Geben, der in der Lage sein sollte, diese Rolle zu übernehmen.

Gibt es eine rein serverseitige Lösung? Oder muss ich einen intelligenten Wrapper um den Redis-Client erstellen, um damit umgehen zu können? Wird mir ein von Sentinel gesteuertes Setup helfen?

+0

Haben Pubsub in einem verteilten Setup nicht verwendet, aber ich denke zuerst an Redis als Datenserver. Pubsub ist ein Sahnehäubchen. Wenn Sie eine zuverlässige verteilte Nachrichtenwarteschlange haben müssen, gibt es spezielle Lösungen. Ich habe gehört, RabbitMQ ist ziemlich gut. –

+0

Ja, wir haben angefangen, Redis so zu benutzen (als "gemeinsames Wörterbuch") - aber während sich unser Projekt entwickelte, stellte sich heraus, dass Nachrichtenbasierte Kommunikation besser zu unseren Bedürfnissen passt. Redis war da, und es unterstützt es, also begannen wir, es als Nachrichtenbroker zu verwenden. Nichts ist in Stein gemeißelt, wir werden auch andere Lösungen prüfen. – user2519450

Antwort

3

Doing Pub Sub in Redis mit Failover bedeutet, über zusätzliche Faktoren auf der Client-Seite nachzudenken. Ein Schlüsselelement zum Verständnis ist, dass Abonnements pro Verbindung sind. Wenn Sie einen Kanal auf einem Knoten abonniert haben und dieser fehlschlägt, müssen Sie die Verbindung wiederherstellen und erneut abonnieren. Da Subskriptionen auf der Verbindungsebene ausgeführt werden, können sie nicht repliziert werden.

In Bezug auf die Details, wie es funktioniert und was kann man erwarten, zu sehen, zusammen mit Möglichkeiten, um es einen Beitrag sehe ich früher in diesem Jahr bei https://objectrocket.com/blog/how-to/reliable-pubsub-and-blocking-commands-during-redis-failovers

Sie können durch den Abschluss Sklaven das Risiko Oberfläche senken und Veröffentlichen auf dem Master, aber Sie müssten dann nicht-promotive Sklaven zum Abonnieren haben und müssen immer noch mit dem Verlust eines Sklaven umgehen - es gibt genauso viel Chance, einen bestimmten Slave zu verlieren, wie es einen Master gibt.

+0

Danke, es machte das Bild viel klarer. Ihr Blogpost ist für einen Neueinsteiger nicht so einfach zu lesen, aber er sagt es definitiv. – user2519450

1

IMO, PUB/SUB ist keine gute Wahl, kann disque sein (kommt von antirez, Autor des Redis) passt besser:

Disque, eine im Speicher, verteilte Auftragswarteschlange

+0

Danke, ich werde es überprüfen. – user2519450

Verwandte Themen