2016-10-25 4 views
2

Ich plante die Verwendung von Mosca oder Mosquitto Brokern (da sie Open Source sind), um eine skalierbare Architektur mit Nachrichtenwarteschlangenreplikation zu erreichen, um eine Nachricht zu vermeiden, die der Broker bei einem eventuellen Ausfall des Brokers noch nicht geliefert hat.
Wie ich gelesen habe, ist mosquitto eine ausgereifte und sehr stabile Lösung mit der Fähigkeit horizontaler Skalierbarkeit unter Verwendung von Brücken. Aber ich konnte kein Plugin finden, um Nachrichten in eine Datenbank zu schreiben (allen Brokern gemein), also denke ich, dass dies eine Einschränkung ist, da wenn wir zB zwei Broker auslasten und einer von ihnen aussterben, dann alle Nachrichten davon Broker kann erst geliefert werden, wenn der Broker wiederhergestellt ist. Mosca in der anderen Hand ermöglicht es uns, mit Redis zu skalieren, und wenn der Broker 1 stirbt, kann broker2 immer noch Nachrichten liefern, weil sie in einer gemeinsamen Datenbank gespeichert sind. Und auf diese Weise kann ich die Master-Slave-Konfiguration von redis verwenden, um Single Point of Failure zu vermeiden.Mosquitto vs Mosca horizontale Skalierbarkeit und Belastbarkeit?

Also meine Fragen sind:

1) Ist Mosca eine gute Wahl für die Produktion?

2) Ist es möglich, redis zu verwenden, um Nachrichtenwarteschlangen mit mosquitto zuzuordnen?

Antwort

5

Horizontale Skalierbarkeit ist für MQTT-Broker unglaublich schwierig, da für diese Skalierbarkeit von Anfang an ein Engineering erforderlich ist. Auch das Replizieren von Warteschlangen für nicht zugestellte Nachrichten hilft nicht bei Ausfallsicherheit oder Fehlertoleranz.

Auch wenn es einfach wäre hinzuzufügen, würde ich mit redis gehen nicht, da es Nachrichten im Wesentlichen verliert: https://aphyr.com/posts/283-jepsen-redis

Wenn Sie horizontale Skalierbarkeit wollen, würde ich empfehlen, einen Makler zu überprüfen, die Clustering hat, horizontale (oder besser: lineare) Skalierbarkeit integriert und erlaubt Netzwerk-Splits.

Hier ist eine Serie über MQTT und Clustering: http://www.hivemq.com/blog/clustering-mqtt-introduction-benefits/