gpt4 book ai didi

node.js - 在 Node + Mongo 中强制执行单个 DB Writer

转载 作者:可可西里 更新时间:2023-11-01 09:55:54 24 4
gpt4 key购买 nike

为了减少读取时间,我对存储在 MongoDB 中的一些数据进行了非规范化处理。每当我执行写操作时,都需要刷新它,以使其与底层数据保持一致。

为避免出现任何竞争情况,我想将其拆分为单线程的后台任务。在 Java 中,我会简单地将 Command 对象放入队列中,并让读取器线程一次处理一个对象。但是在 Node 中,每当我执行任何类型的数据库操作时,它都会异步发生,因此我会遇到竞争条件问题。

我想做的事的例子:

应用线程

  1. 插入新的“出价”
  2. 将“BidPlaced”对象放入队列

后台线程

  1. 弹出“BidPlaced”
  2. 从所有出价中找出最大值(价格)。更新 Auction.highestBid。

我仍然在思考 Node 的并发模型(如果你不知道的话!)。我如何在 Node.js 中实现类似的功能。

最佳答案

我有一个类似的应用程序,我使用 child_process fork 后台作业:

  1. 插入新的“出价”
  2. 将“BidPlaced”对象放入队列

然后我会将队列中的下一个出价发送给子进程:

// Application Thread
var child = cp.fork('the background thread module');
child.send(nextBid);

在后台线程中监听消息:

// Background Thread
process.on('message', function(bid) {
// Do your background work
process.send(bid);
});

然后在应用程序中监听后台完成:

// Application Thread
child.on('message', function(lastBid) {
// Check the queue and do it again
});

关于node.js - 在 Node + Mongo 中强制执行单个 DB Writer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15754955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com