2013-01-02 13 views
5

我正在尋找一種有效的方法來訂閱來自節點的riak事件。我希望能夠從riak入口處獲知變更情況。獲取有關數據庫更改的通知:是否可以觀看riak中的條目?

例如,當一個node.js服務器更新條目時,使用和查看該條目的另一個服務器將自動接收更新條目或關於其更新的通知。

如果這是不可能的,是否有一個高效的消息傳遞系統可以在node.js服務器上有效地使用?

回答

5

Riak實現了所謂的Pre and Post commit hooks。當寫入成功發生時(並且大概是你想要的)只能用Erlang代碼編寫,並且Riak需要配置爲觸發自定義的Erlang函數,作爲相應存儲桶上的屬性,將會觸發後提交。

根據您的需求和您的應用程序的規模,可以有幾個選項讓您的Erlang安裝程序通知您的Node.js服務器。編寫一個Erlang函數會比較容易,它會向您的Node.js服務器發送一個HTTP請求,但這會帶來相當多的開銷,這可能不適合您的應用程序。很多更好,但稍微複雜一點的是使用RedisZeroMQ(僅僅是一對夫婦)提供的pub/sub系統,這些系統經過戰鬥測試並證明在重負載下表現非常好。如果您想要使用ZeroMQ,請參閱this guide瞭解如何實施非常可靠的pub/sub。

這兩種通訊工具,以及其他許多人,可以通知更新您的Node.js實例無論從了Riak或者某個有效地修改數據Node.js的情況下觀看條目。第二個選項(Node.js到Node.js)可能更簡單,因爲如果你不熟悉它,它不會要求你學習Erlang。這兩個工具具有非常良好測試的Node.js庫:

如果你使用它們中了Riak從發出通知,爲後提交掛鉤,這裏有相應的驅動程序二郎:

+0

我認爲跨node.js實例的ZeroMQ不適合我。至少不適合當前的項目。我會看看Pre/Post提交鉤子,它可能在那裏派上用場。謝謝! – Coyote

+0

如果答案是什麼你要找的人,你應該把它標記爲這樣的! – matehat

+0

我會的,我等着嘗試這在更大的規模目前該項目被擱置。 – Coyote

相關問題