【发布时间】:2013-09-15 01:59:54
【问题描述】:
Meteor 的 DDP 协议非常适合将少量数据从服务器同步到基于浏览器的客户端,这从本质上限制了处理的数据量。
但是,考虑使用 Meteor 将大型集合从一台服务器同步到另一台服务器的情况,或者仅使用 DDP 协议本身将一个 MongoDB 与另一个同步。
在这种情况下(计算)DDP 的效率如何?它对多个客户的扩展性如何?性能的限制仅仅是带宽还是 DDP 也会受到 CPU 的限制?目前可以通过 DDP 合理同步的最大数据量是多少? DDP 是否只是这样做的错误方法(请参阅下面的参考资料)?
一些额外的想法:
- 据我所知,当前版本的 DDP 会跟踪每个客户端的整个集合,因此它不能渐近高效。
- 创建Smart Collections 是为了提高服务器到客户端同步收集的性能。但我不清楚这是否在改进 DDP 或其他方面。
另见:
- How to implement real-time replication of MongoDB (or CouchDB) to many remote clients
- DDP vs Straight MongoDB access for synching large amounts of data
编辑:
在这方面的一些经验经验之后,我不得不得出结论,答案是“不是很有效”。请参阅 https://stackoverflow.com/a/21835534/586086 了解说明。
与 Meteor 开发人员的讨论表明,这个问题将在未来通过 DDP 和发布-订阅 API 的修订来解决,其中合并框将被删除,客户端将处理合并。这将节省服务器上的 CPU/内存,并允许通过网络发送更大的数据集。
【问题讨论】:
-
这可能更适合作为邮件列表的帖子或 gh 问题。我肯定希望看到一些测试/基准来证明一种或另一种方式。
标签: meteor publish-subscribe database-replication ddp