ノードから riak でイベントを購読する効率的な方法を探しています。riak からのエントリの変更について通知を受け取れるようにしたいと考えています。
たとえば、ある node.js サーバーがエントリを更新すると、そのエントリを使用して監視している別のサーバーが、更新されたエントリまたはその更新に関する通知を自動的に受け取ります。
これが不可能な場合、node.js サーバー間で効率的に使用できる効率的なメッセージング システムはありますか?
Riak はPre および Post コミット フック と呼ばれるものを実装しています。書き込みが成功したときにトリガーされるポストコミット (そしておそらくあなたが望むもの) は Erlang コードでのみ記述でき、適切なバケットのプロパティとしてカスタム Erlang 関数をトリガーするように Riak を構成する必要があります。
ニーズとアプリケーションの規模に応じて、Erlang のセットアップで Node.js サーバーに通知するためのオプションがいくつかあります。HTTP リクエストを Node.js サーバーに送信する Erlang 関数を作成するのは比較的簡単ですが、かなりのオーバーヘッドが発生するため、アプリケーションには不適切である可能性があります。RedisやZeroMQ (ほんの一例を挙げれば)が提供するような pub/sub システムを使用する方が、はるかに優れていますが、少し複雑です。ZeroMQ を使用する場合は、信頼性の高い pub/sub の実装方法に関するこのガイドを参照してください。
これらのメッセージング ツールは両方とも、他の多くのツールと同様に、Riak またはデータを効果的に変更している Node.js インスタンスから、監視されているエントリへの更新の Node.js インスタンスに通知できます。2 番目のオプション (Node.js から Node.js) は、Erlang に慣れていない場合に学習する必要がないため、より単純な場合があります。これらのツールには両方とも、十分にテストされた node.js ライブラリがあります。
そして、コミット後のフックとして Riak 内から通知を送信するためにそれらを使用する場合、対応する erlang ドライバーは次のとおりです。