2013-01-02 11 views
5

ノードからriakのイベントを購読する効率的な方法を探しています。私はriakからのエントリの変更を通知することができるようにしたいと思います。データベースの変更に関する通知を受ける:riakのエントリを見ることは可能ですか?

たとえば、node.jsサーバーがエントリを更新すると、そのエントリを使用している別のサーバーが更新されたエントリまたはその更新に関する通知を自動的に受け取ります。

node.jsサーバー間で効率的に使用できる効率的なメッセージングシステムがない場合は、

答えて

5

リアクは、Pre and Post commit hooksと呼ばれるものを実装しています。書き込みが正常に行われたときにトリガされるポスト・コミットは、Erlangコードでのみ記述でき、適切なバケットのプロパティとしてカスタムErlang関数をトリガするようにRiakを設定する必要があります。

アプリケーションのニーズや規模に応じて、ErlangのセットアップでNode.jsサーバに通知するオプションがいくつかあります。 Node.jsサーバにHTTPリクエストを送信するErlang関数を記述するのは比較的簡単ですが、それはかなりのオーバーヘッドを伴い、アプリケーションにとってはうってつけです。多くの方が良いですが、やや複雑ですが、RedisまたはZeroMQ(ちょうどカップルに名前を付ける)で提供されているようなパブ/サブシステムを使用するのが、バトルテストの結果、重い負荷で非常にうまく動作することが証明されます。 ZeroMQを使いたい場合は、信頼性の高いpub/subを実装する方法については、this guideを参照してください。

これらのメッセージングツールは、Node.jsインスタンスに、RiakまたはNode.jsインスタンスからの監視対象エントリへの更新を効果的に通知することができます。 2番目のオプション(Node.js〜Node.js)は、あなたがそれに精通していない場合にErlangを習得する必要がないので、より単純かもしれません。

そして、あなたはポストとしてRiakに内から通知を送信するためにそれらを使用した場合:これらのツールはどちらも非常によくテストされているのNode.jsのライブラリを持っていますここでは、フックをコミット対応のerlangドライバです:

+0

私はnode.jsのインスタンス間のZeroMQは私のために行く方法ではないと思います。少なくとも現在のプロジェクトではない。 Pre/Postコミットフックを見て、そこに便利になるかもしれません。ありがとう! – Coyote

+0

その答えがあなたが探していたものであれば、そのようにマークする必要があります! – matehat

+0

私は、現在プロジェクトが保留中であることを大規模に試すのを待っています。 – Coyote

関連する問題