【发布时间】:2020-10-02 12:58:00
【问题描述】:
我有一个用于Meteor 应用程序的简单迁移脚本。在启动时,它会运行一些代码来修改Collection 中的所有Documents。我在 Heroku 上运行了 5 个测功机,并在日志中注意到我的 console.logs 被称为 5x(每个测功机 1 个)。
这是否意味着我的DB 也更新了 5 倍?
谢谢!
【问题讨论】:
标签: node.js mongodb heroku meteor
我有一个用于Meteor 应用程序的简单迁移脚本。在启动时,它会运行一些代码来修改Collection 中的所有Documents。我在 Heroku 上运行了 5 个测功机,并在日志中注意到我的 console.logs 被称为 5x(每个测功机 1 个)。
这是否意味着我的DB 也更新了 5 倍?
谢谢!
【问题讨论】:
标签: node.js mongodb heroku meteor
您应该使用https://atmospherejs.com/percolate/migrations 之类的东西来确保一次只有一个进程可以获得数据库锁。
这样只有一个节点会运行迁移代码。
【讨论】:
findOneAndUpdate() 实现自己的简单锁定以防止出现竞争条件。这样,只有一个 Web Worker 会执行迁移。