流星多租户功能

时间:2013-04-06 08:58:09

标签: meteor

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

Meteor会将对集合的任何更改发送到该特定订阅。订户未被告知文档可能已更改,他们只是简单地发送了数据更改。 DDP有一种'crud'告诉客户端要做什么,即删除,更新,插入..

对于您上面的Documents.find,该特定用户只会收到他们的更新,而其他用户根本不会收到通知。

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

上很快就会看到缓存

DDP仍处于pre1版本中,但我认为这将在未来进一步优化,尤其是在每个订阅上可能不是唯一的查询(即Documents.find()而不是{{1 }}。)

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