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

And*_*Mao 6 architecture package meteor meteorite

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

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

据我所知,此功能可以为任何应用程序定制设计.但是,我正在寻找一种智能包最简单的方法,在任何现有应用程序的基础上提供此功能,同时考虑到Meteor的使用Collection和所有.因此,它应该或多或少地满足以下要求:

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

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

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

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

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

And*_*Mao 6

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

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

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

使用它的包的示例如下:

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