2013-01-02 8 views
5

Ich bin auf der Suche nach einer effizienten Möglichkeit, Veranstaltungen in Riak von Knoten abonnieren. Ich möchte gerne über Änderungen bei einem Eintrag von riak informiert werden.Benachrichtigungen über Datenbankänderungen erhalten: Ist es möglich, Einträge in Riak zu sehen?

Wenn beispielsweise ein node.js-Server einen Eintrag aktualisiert, empfängt ein anderer Server, der diesen Eintrag verwendet und überwacht, automatisch den aktualisierten Eintrag oder eine Benachrichtigung über dessen Aktualisierung.

Wenn dies nicht möglich ist, gibt es ein effizientes Messaging-System, das effizient über node.js Server hinweg verwendet werden kann?

Antwort

5

Riak implementiert das, was Pre and Post commit hooks genannt wird. Post-Commits, die ausgelöst werden, wenn ein Schreibvorgang erfolgreich ausgeführt wird (und vermutlich auch Ihren Wünschen entspricht), können nur in Erlang-Code geschrieben werden und Riak muss so konfiguriert werden, dass die benutzerdefinierte Erlang-Funktion als Eigenschaft des entsprechenden Buckets ausgelöst wird.

Je nach Ihren Anforderungen und dem Umfang Ihrer Anwendung kann Ihr Erlang-Setup mehrere Möglichkeiten haben, Ihre Node.js-Server zu benachrichtigen. Es wäre relativ einfach, eine Erlang-Funktion zu schreiben, die eine HTTP-Anfrage an Ihren Node.js-Server sendet, die aber ziemlich viel Overhead mit sich bringt, was für Ihre Anwendung sehr ungeeignet sein könnte. Viel besser, aber etwas komplizierter wäre es, ein Pub/Sub-System wie das von Redis oder ZeroMQ (um nur ein paar zu nennen) zu verwenden, das kampferprobt ist und unter starker Belastung sehr gut funktioniert. Wenn Sie mit ZeroMQ arbeiten möchten, finden Sie unter this guide Informationen zur Implementierung eines sehr zuverlässigen Pub/Sub.

Diese beiden Messaging-Tools sowie viele andere können Ihre Node.js-Instanz über Updates für überwachte Einträge von Riak oder der Node.js-Instanz informieren, die die Daten effektiv ändert. Die zweite Option (Node.js to Node.js) könnte einfacher sein, da Sie Erlang nicht erlernen müssen, wenn Sie nicht damit vertraut sind. Beide Tools haben node.js Bibliotheken, die sind sehr gut getestet:

Und wenn man sie benutzen waren Benachrichtigungen zu senden, von innen Riak als post- commit Haken, hier sind die entsprechenden erlang Treiber:

+0

Ich denke, ZeroMQ über node.js Instanzen ist nicht der Weg, um für mich zu gehen. Zumindest nicht für das aktuelle Projekt. Ich werde mir die Pre/Post Commits anschauen und es könnte sich als nützlich erweisen. Vielen Dank! – Coyote

+0

Wenn diese Antwort das ist, wonach Sie gesucht haben, sollten Sie es als solches markieren! – matehat

+0

Ich werde, ich warte darauf, dies in größerem Maßstab auszuprobieren, derzeit ist das Projekt in der Warteschleife. – Coyote