如何设计流星智能包以透明地将应用程序分成不同的实例?

时间:2013-06-28 03:11:39

标签: architecture package meteor meteorite

对于那些非常熟悉Meteor架构的人来说,这是一个问题。

我正在尝试设计一个可以透明地运行Meteor应用程序的几个“副本”的智能包。也就是说,鉴于现有的Meteor应用程序和几个预定义的用户组,该软件包可以半自动地“隔离”应用程序 - 以对每个用户组的方式运行它,似乎只有那些用户是使用该应用

据我所知,此功能可以为任何应用程序定制设计。但是,考虑到使用Meteor的Collection和所有应用程序,我正在寻找智能包在任何现有应用程序之上提供此功能的最直接方式。因此,它或多或少应满足以下条件:

  • 它应该与普通的Meteor应用程序一样高效。
  • 转换现有的Meteor应用程序以使用此系统应该只需要最少的代码修改。
  • 该软件包不应该修改或覆盖Meteor,并且相对面向未来。

以下是我为此问题考虑的一些方法和相应的缺点:

  • 使用常规Meteor应用程序的所有集合,并使用表示用户所在组的附加ID标记每个文档。每个用户的发布/订阅仅拉取具有相同组ID的文档。
  • 覆盖Meteor.Collection(或实现相同的界面),使其了解这些不同的组,从客户端的角度来看,它的行为就像当前用户的组是整个应用程序一样。

我正在寻找真正了解Meteor系统的人的好主意。我如何设计这个功能的方式是绝大多数Meteor应用程序可以很容易地转换为使用它(即避免疯狂的黑客攻击)但在Meteor上实现是否简单有效?

(如果你是纽约市地区的流星大师,我很乐意带你出去吃饭讨论这个!)

1 个答案:

答案 0 :(得分:6)

我已经完成了这个问题的工作并将其拉出到Meteor智能包中。它满足我在我的问题中提到的所有要求。有关更多详细信息,请参阅文档和说明。

  

https://github.com/mizzao/meteor-partitioner

因为我已经在实践中使用过它,所以代码非常稳定并且有一套很好的测试。欢迎提出意见和建议。

使用它的包的示例如下:

  

https://github.com/HarvardEconCS/turkserver-meteor