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

时间:2013-01-02 23:26:11

标签: node.js riak

我正在寻找一种从节点订阅riak中的事件的有效方法。我希望能够收到来自riak的条目变更的通知。

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

如果这是不可能的,那么有效的消息传递系统可以在node.js服务器上有效使用吗?

1 个答案:

答案 0 :(得分:5)

Riak实现了所谓的Pre and Post commit hooks。写入成功后将触发的post-commit(可能是你想要的)只能用Erlang代码编写,而Riak需要配置为触发你的自定义Erlang函数,作为相应存储桶的属性。

根据您的需求和应用程序的规模,Erlang设置可以有多个选项来通知您的Node.js服务器。编写一个向您的Node.js服务器发送HTTP请求的Erlang函数会相对容易,但这会带来很多开销,这可能很适合您的应用程序。更好,但稍微复杂一点的是,使用像RedisZeroMQ提供的酒吧/子系统(仅举几个例子),这些系统经过实战测试并证明可以执行在重负荷下非常好。如果您想使用ZeroMQ,请参阅this guide了解如何实现非常可靠的pub / sub。

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

如果您使用它们从Riak内部发送通知作为提交后挂钩,则以下是相应的erlang驱动程序: