【问题标题】:Meteor multi tenant capabilitiesMeteor 多租户功能
【发布时间】:2013-04-09 07:04:51
【问题描述】:

Meteor 是否能够在服务多个不同用户的同时保持高性能?

例如,如果我声明以下出版物,它只允许用户检索他们自己的文档:

Meteor.publish("UserList", function () {
  return Documents.find({user: this.userId});
});

想象一下,成千上万的用户正在从该出版物中获取信息,每个用户都在为自己的文档提供信息。当一个文档被更新时会发生什么?即,是否所有用户都通知他们的列表可能已更改?服务器是否为所有可能的用户执行查询并只通知那些重要的用户? Meteor 在这种情况下如何保持性能?

或者有没有更好的方法在 Meteor 中实现多租户?

【问题讨论】:

    标签: meteor


    【解决方案1】:

    在这种情况下,只有订阅了该发布功能的用户才能获得更新。

    Meteor 会将对集合的任何更改发送到该特定订阅。订阅者不会被告知文档可能已更改,他们只是发送了数据更改。 DDP 有一种“粗鲁”,告诉客户端该做什么,即删除、更新、插入......

    对于您上面的Documents.find,只会向该特定用户发送他们的更新,而不会通知其他用户。

    我不是 100% 确定这部分,因为 0.5.7 中有一些更改,但是对于通过 DDP 的每个连接,都会有一个订阅,每个订阅都有自己的查询(即使查询与其他订阅相同)。看起来这个缓存很快就会在 trello 上定位:https://trello.com/card/improve-server-side-performance-of-subscriptions/508721606e02bb9d570016ae/10

    DDP 仍处于 pre1 版本中,但我想这将在未来进一步优化,特别是在每个订阅中不太可能唯一的查询(即 Documents.find() 而不是 Document.find({user:this.userId})。)

    有关 DDP 协议的完整规范,请查看:https://github.com/meteor/meteor/blob/master/packages/livedata/DDP.md

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 2011-10-05
      • 2014-09-13
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      • 2018-05-07
      相关资源
      最近更新 更多