- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Meteor 的 DDP 协议(protocol)非常适合将少量数据从服务器同步到基于浏览器的客户端,这本质上限制了处理的数据量。
但是,考虑这样一种情况:Meteor 用于将大型集合从一台服务器同步到另一台服务器,或者仅使用 DDP 协议(protocol)本身将一个 MongoDB 与另一个服务器同步。
在这种情况下,DDP 的效率如何(计算上)?它对多个客户端的扩展能力如何?对性能的限制是仅带宽还是 DDP 也会达到某些 CPU 限制?目前可以通过 DDP 合理同步的最大数据量是多少?DDP 是否是执行此操作的错误方法(请参阅下面的引用资料)?
一些额外的想法:
另请参阅:
编辑:
经过一些经验之后,我得出的结论是,答案“不是很有效”。请参阅https://stackoverflow.com/a/21835534/586086 进行解释。
与 Meteor 开发人员的讨论表明,这个问题将在未来通过 DDP 和发布-订阅 API 的修订来解决,其中合并框将被删除,客户端将处理合并。这将节省服务器上的 CPU/内存,并允许通过线路发送更大的数据集。
最佳答案
基本上,这更多的是向客户发布内容和方式的问题,而不是客户数量的问题。如果有索引,请求通常在 log2(N) 中处理,因此即使(在最坏的情况下)整个集合发生变化,服务器也很容易重新计算结果集。因此,从服务器端您可以非常快速地获取新结果集以发布到客户端(如果它们与已有的结果集发生了更改)。
真正的问题(和常见错误)出现在您将所有内容发布给客户时(就像以前的自动发布一样),因此明智地发布内容,以便您只提供客户应该看到的内容。您可以修剪隐藏无用字段的文档,也可以通过创建具有特定于您的数据使用范围参数的发布来减少发送给客户端的结果集。
数据 react 性(绑定(bind)在发布上的 session 参数)也应该小心处理,例如,如果您每次在搜索字段中按下某个键时都发送一个请求,您可能会很快使连接过载(仍然强烈依赖于您要发布的集合的大小)。我们必须解决这个问题,试图通过 meteor 构建房地产服务,数据集超过几千兆字节,在不阻塞管道的情况下处理这个问题非常具有挑战性。
就带宽而言,DDP 非常好,因为它确实支持巧妙的条目更新(仅发送字段更改而不是整个文档),支持移动项目(服务器端重新排序)。
另请查看this excellent answer关于庞大的收藏,幕后是做什么的。
关于meteor - Meteor 的 DDP 在同步大型集合方面的效率如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18734507/
我试图阻止用户使用 Meteor 包 ddp-rate-limiter 过于频繁地调用 Meteor 方法(例如,防止垃圾邮件或 DOS 攻击),但是我无法让它工作。 有人有想法吗? 服务器/ddpR
DPP能够对目标检测proposal进行非统一处理,根据proposal选择不同复杂度的算子,加速整体推理过程。从实验结果来看,效果非常不错 来源:晓飞的算法工程笔记 公众号 论文:
我有两个 meteor 应用程序通过不同服务器上的 DDP 连接,服务器 A 向服务器 B 发送数据。这就是它们的工作方式。 服务器A Items = new Meteor.Collection('i
我在不同的服务器上通过 DDP 连接了两个 meteor 应用程序,服务器 A 将数据发送到服务器 B。这就是它们的工作方式。 服务器A Items = new Meteor.Collection('
我使用 Django 作为后端。在阅读有关 meteor 的资料时,我发现了 django-ddp。我搜索了很多,但我没有得到 django-ddp 的用途。我知道您可以使用它来将 meteor 连接
对于这个问题,我很抱歉,我还不是 django 和 meteorjs 的专家。我正在尝试使用此 django-ddp 技术,但在 https://github.com/commoncode/djang
是否可以在独立浏览器中通过 DDP 订阅 Meteor 的数据? 我找到了 meteor DDP package其中指出这是可以做到的。 如何在浏览器中独立使用它来接收例如收藏更新? 或者您知道浏览器
我已经通过 DDP 连接了两个 meteor 应用程序。我希望在第二个服务应用程序上也能获得数据库数据,但我没有得到任何数据。由于两者都在服务器端运行,所以我没有进行任何订阅 - 我认为在这个示例中我
当我使用 ddp 模式(2 个 GPU)在集群上启动我的主脚本时,Pytorch Lightning 会复制主脚本中执行的任何内容,例如打印或其他逻辑。我需要一些扩展的训练逻辑,我想自己处理。例如。在
如何关闭该功能或停止为 Delphi 7 表单创建所有 .ddp 文件?我读到了一些关于删除 designdgm60.bpl 的内容,但这是唯一的方法吗?看来还有一种方式我已经记不清了。 更新:我尝试
背景:运行 Windows 10 和 Meteor 1.3.3 C:\Users\lisa-_000\Documents\simple-todos>meteor [[[[[ C:\Users\lisa
Meteor 的 DDP 协议(protocol)非常适合将少量数据从服务器同步到基于浏览器的客户端,这本质上限制了处理的数据量。 但是,考虑这样一种情况:Meteor 用于将大型集合从一台服务器同步
我在三台不同的服务器上有 3 个 meteor 应用程序。其中一个拥有另外两个使用的所有数据。我正在使用 ddp.connect()。 所以这三个应用程序运行良好,但我现在担心的是安全性。在考虑安全性
我正在尝试对从客户端到服务器的登录尝试次数设置 DDP 速率限制器。我已经阅读了官方文档,但无法验证其中是否真的有效。 我已经添加了软件包:ddp-rate-limiter 我的服务器代码是: Met
我已经设法通过 DDP 连接了 2 个应用程序,但我有点不确定如何从源服务器发布数据。 这是我在客户端上尝试的: Template.Dashboard.onCreated(function() {
我计划为强类型、数据驱动的后端平台编写一个 Meteor/DDP 服务器。服务器必须能够向客户端推送数据并接受来自客户端的数据。 阅读 DDP documentation 后看来该协议(protoco
我们通常按如下方式发布数据... Meteor.publish('items', function(a) { return Items.find(a, {fields: {observeA:1,
如果没有,是否还有其他替代方案可以节省带宽?如果是,它是否在更深的层上完成,例如第 3 方 nodejs 模块? 最佳答案 要了解 DDP,请查看 Arunoda Susiripala 最近发布的惊人
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我正在尝试将移动应用程序与桌面应用程序部分分开,并认为我尝试将 DDP.connect 作为移动应用程序与桌面应用程序共享数据的一种方式。 我的第一个障碍是关于 Meteor 的内部收藏和出版物。 我
我是一名优秀的程序员,十分优秀!