5

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

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

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

4

1 回答 1

5

Riak 实现了所谓的Pre 和 Post 提交钩子。Post-commits,将在写入成功发生时触发(并且可能是您想要的)只能用 Erlang 代码编写,并且需要将 Riak 配置为触发您的自定义 Erlang 函数,作为适当存储桶上的属性。

根据您的需求和应用程序的规模,您的 Erlang 设置可以有多个选项来通知您的 Node.js 服务器。编写一个将 HTTP 请求发送到您的 Node.js 服务器的 Erlang 函数相对容易,但这会带来相当多的开销,这很可能不适合您的应用程序。使用RedisZeroMQ(仅举几例)提供的发布/订阅系统会更好,但稍微复杂一些,这些系统经过实战测试并证明在重负载下表现良好。如果您想使用 ZeroMQ,请参阅本指南,了解如何实现非常可靠的发布/订阅。

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

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

于 2013-01-03T02:48:41.633 回答