【问题标题】:Meteor: server-side db insert delaysMeteor:服务器端数据库插入延迟
【发布时间】:2013-01-16 05:37:28
【问题描述】:

有趣的问题:我有一个 MongoDb 集合,我正在更新服务器端,Meteor 客户端挂钩到同一个集合中。我注意到 mongo-cursor(服务器端)插入记录到客户端的延迟约 10 秒。

问题来了:如果我通过 Meteor 客户端(通过 Chrome 控制台)执行相同的插入操作,客户端和所有其他附加的更新都具有亚秒级响应时间。

服务器端插入 Mongo 与客户端之间存在很大差异 - 不知何故,客户端插入传播并推送到其他客户端的速度比我快得多通过 MongoDb shell 手动插入文档。

对此有什么想法吗?我确定我错过了什么......

【问题讨论】:

    标签: meteor


    【解决方案1】:

    meteor mongo 驱动程序每 10 秒轮询一次 Mongo 中的更改,以确保从 Meteor 外部写入其中的数据向下传递到客户端。这是相关的source code

      // every once and a while, poll even if we don't think we're dirty,
      // for eventual consistency with database writes from outside the
      // Meteor universe
      var intervalHandle = Meteor.setInterval(
        _.bind(self._ensurePollIsScheduled, self), 10 * 1000 /* 10 seconds */);
        self._stopCallbacks.push(function () {
        Meteor.clearInterval(intervalHandle);
      });
    

    这种行为可能会改变per Matt Debergalis, one of the core devs

    此轮询是为了让 Meteor 注意到并非通过 Meteor 服务器进程发生的数据库更改。

    不过,许多应用程序并不需要这个。我们正在考虑禁用它的方法。我们在 hopper 中也有更高效的实现。

    【讨论】:

    • 谢谢。我能偶然观察()我的方式吗?查看文档我想知道是否有办法强制它更频繁地更新......
    • 可能有一种方法可以强制输入,但老实说,我要么(1)使用DDP 将数据推入,要么干脆(2)等待看看in the hopper 是什么,因为他们'重新进入一个非常快速的发布周期......
    • DDP 确实是适合我的方式。我将发布一个单独的问题,关于它的外观 - 目前那里的库似乎非常新,并且在示例上有点稀疏。再次感谢,这应该对我有用。
    • 通过@TimDog 的建议让它工作,在here 上发布了完整的解决方案。非常感谢!
    猜你喜欢
    • 2017-10-07
    • 2014-05-27
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    相关资源
    最近更新 更多