node.js - 获取数据库更改通知 : is it possible to watch entries in riak?

标签 node.js riak

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

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

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

最佳答案

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

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

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

如果您要使用它们作为提交后 Hook 从 Riak 内部发送通知,这里是相应的 erlang 驱动程序:

关于node.js - 获取数据库更改通知 : is it possible to watch entries in riak?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14130868/

相关文章:

riak - Riak 中的重复字段可以创建二级索引吗?

java - Riak:通过 Java/Scala 在键上创建索引

node.js - Sequelize - 要定义外键,我应该使用引用还是 belongsTo?或两者?

node.js - 在 Node.js 中枚举 Object.keys() - 奇怪的问题

php - RiakCS S3 PHP 客户端库

erlang - Windows上的Riak

javascript - 在 socket.io 中使用 jQuery

javascript - 无法找到/或实现正确的 mongoDb 方法来查找和更新子文档

node.js - Sequelize 在任何查找查询上都会崩溃

ruby-on-rails - 设计涟漪