2013-01-02 11 views
5

Szukam skutecznego sposobu subskrybowania zdarzeń w riak z węzła. Chciałbym móc być powiadamiany o zmianach dotyczących wpisu od riak.Otrzymywanie powiadomień o zmianach w bazie danych: czy można oglądać wpisy w dziale?

Na przykład, gdy jeden serwer node.js aktualizuje wpis, inny serwer używający i oglądający wpis otrzymuje automatycznie zaktualizowany wpis lub powiadomienie o jego aktualizacji.

Jeśli jest to niemożliwe, czy istnieje skuteczny system przesyłania komunikatów, który można skutecznie wykorzystać na serwerach node.js?

Odpowiedz

5

Riak implementuje to, co nazywane jest Pre and Post commit hooks. Post-commity, które zostaną uruchomione, gdy pomyślnie wystąpi zapis (i prawdopodobnie to, czego chcesz) mogą być zapisane tylko w kodzie Erlang, a Riak musi być skonfigurowany tak, aby uruchamiał twoją niestandardową funkcję Erlang, jako właściwość w odpowiednim segmencie.

W zależności od potrzeb i skali aplikacji, może istnieć kilka opcji konfiguracji Erlanga, aby powiadomić o swoich serwerach Node.js. Byłoby stosunkowo łatwo napisać funkcję Erlang, która wysłałaby żądanie HTTP do twojego serwera Node.js, ale to niesie ze sobą spore obciążenie, które może być nieodpowiednie dla twojej aplikacji. Dużo Lepiej, ale nieco bardziej skomplikowane, byłoby użycie systemu pub/sub, takiego jak te oferowane przez Redis lub ZeroMQ (tylko po to, żeby wymienić parę), które są testowane w warunkach bojowych i udowodnione, że działają bardzo dobrze przy dużym obciążeniu. Jeśli chcesz iść z ZeroMQ, zobacz this guide, jak wdrożyć bardzo niezawodny pub/sub.

Oba te narzędzia do przesyłania wiadomości, a także wiele innych, mogą powiadamiać twoją instancję Node.js o aktualizacjach obserwowanych wpisów z instancji Riak lub Node.js, która skutecznie modyfikuje dane. Druga opcja (Node.js do Node.js) może być prostsza, ponieważ nie wymaga ona nauki Erlanga, jeśli nie jesteś zaznajomiony z tym. Oba te narzędzia mają node.js bibliotek, które są bardzo dobrze sprawdzone:

A jeśli było ich używać do wysyłania powiadomień z poziomu Riak jako post- commit haki, tutaj są odpowiednie sterowniki Erlang:

+0

Uważam, że ZeroMQ w instancjach node.js nie jest dobrym rozwiązaniem. Przynajmniej nie dla bieżącego projektu. Rzucę okiem na haki Przed/po zatwierdzeniu i może się to przydać. Dzięki! – Coyote

+0

Jeśli ta odpowiedź jest tym, czego szukałeś, powinieneś oznaczyć ją jako taką! – matehat

+0

Będę, czekam, aby wypróbować to na większą skalę, w chwili obecnej projekt jest wstrzymany. – Coyote

Powiązane problemy