获取有关数据库更改的通知:是否有可能在riak中查看条目?

我正在寻找一种有效的方法来订阅从节点riak事件。 我希望能够从riak入口通知变化。

例如,当一个node.js服务器更新条目时,使用和查看该条目的另一个服务器会自动接收更新的条目或关于其更新的通知。

如果这是不可能的,是否有一个高效的消息传递系统,可以有效地使用node.js服务器?

Riak实现了所谓的Pre和Post提交钩子 。 Post-commits(写入成功发生时会触发)(大概是你想要的)只能用Erlang代码编写,而Riak需要configuration为触发你自定义的Erlang函数,作为相应存储区的属性。

根据您的需求和您的应用程序的规模,可以有几个选项让您的Erlang安装程序通知您的Node.js服务器。 编写一个Erlang函数会比较容易,它会向你的Node.js服务器发送一个HTTP请求,但是这会带来相当多的开销,这可能不适合你的应用程序。 很多更好的,但稍微复杂一点的是使用Redis或ZeroMQ提供的pub / sub系统(仅仅是一对夫妇),这些系统经过了战斗testing,并certificate在重负载下运行得非常好。 如果你想使用ZeroMQ,请参阅本指南 ,了解如何实现非常可靠的pub / sub。

这两个消息传递工具以及其他许多工具都可以通过Riak或Node.js实例的Node.js实例通知更新,以便有效地修改数据。 第二个选项(Node.js到Node.js)可能会更简单,因为如果你不熟悉Erlang,它不需要你学习Erlang。 这两个工具都有经过很好testing的node.js库:

  • Zeromq.node
  • Redis的节点

如果您要使用它们从Riak内部发送通知作为提交后挂接,请参阅相应的erlang驱动程序:

  • Erlzmq2
  • Eredis