2017-06-11 4 views
1

Ich bin neu bei RabbitMQ. Ich wollte wissen, wie Speicher im Falle von HA verwendet wird. Zum Beispiel in Kafka die Partition eine bestimmte Menge an Speicher verwenden, wenn Daten vorhanden sind oder nicht darin und so die Replikationen. In RabbitMQ wie sind die Warteschlangen Speicher reserviert? Und wie funktioniert HA? Beziehen sich die gespiegelten Warteschlangen auf jeden replizierten Knoten?RabbitMQ HighVerfügbarkeit

Antwort

1

Warteschlangen in RabbitMQ benötigen nicht viele Ressourcen per se, aber Nachrichten werden in den meisten Fällen im Speicher gehalten. Wenn eine Nachricht an die Warteschlange mit gespiegelten Warteschlangen gesendet wird, wird diese Nachricht unter anderen durch die Spiegelungsrichtlinie definierten Knoten repliziert. Die Idee der gespiegelten Warteschlangen besteht darin, eine hohe Verfügbarkeit bereitzustellen. Wenn also der Broker, der die Masterwarteschlange hostet, abstürzt, wird eine neue Masterwarteschlange unter den aktiven gespiegelten Warteschlangen ausgewählt. Der Wechsel zu dem neuen Knoten sollte ziemlich schnell erfolgen, da alle Nachrichten bereit sind, verbraucht zu werden.

einfaches Beispiel:

Das Cluster besteht aus 3-Knoten:

Initial cluster

Die test Warteschlange auf dem node-1.rabbitmq Knoten erzeugt wurde, und die Spiegelungsstrategie angewendet wurde Nachrichten auf allen Knoten zu replizieren :

Queue with mirrored queues

Ungefähr 70k Meldungen wurden an die test Warteschlange und der Screenshot aus dem RabbitMQ-Management-Tool ist unten geschickt gezeigt:

enter image description here

Es ist klar, dass alle Knoten Nachrichten bekamen, und sie werden im Speicher gehalten.

Speicherverbrauch von RabbitMQ ist ein heikles Thema und es gibt viele Faktoren, die es beeinflussen können (Art der Warteschlange, die Anzahl der Nachrichten in anderen Warteschlangen, das Erreichen der definierten Grenzwerte usw.). In der official documentation wird angegeben:

RabbitMQ kann über seinen eigenen Speicher berichten, um zu sehen, wo Ihr System Speicher verwendet. Beachten Sie, dass alle Messungen ungefähr approximieren, basierend auf Werten, die von der zugrunde liegenden virtuellen Erlang-Maschine zurückgegeben werden. Sie sollten jedoch immer noch genau genug sein, um nützlich zu sein.