1

我们正在为我们的新一代企业级系统评估 Meteor。令人惊叹的内置功能之一是客户端中的每个数据模型都绑定到数据库中的模型,并在服务器更新时更新。但我担心可扩展性。

使数百万连接用户失效所需的架构是什么?

我想基本问题是数据库如何绑定到服务器和客户端上的模型。进一步推断,假设我们有多个网络服务器在运行,还有一个数据库。是否支持?如果是这样,怎么做?如果有人能描述实现它的底层技术,那将有很大帮助。

我想这可能是扩展任何使用响应式模型的 Web 应用程序的一般问题。首先,这是真的——任何关于它的讨论也很棒(实现它的最佳设计是什么?)。

其次,特别是 Meteor,因为它看起来更加单一(在“一切都为您完成”的意义上),我们正在寻找更多的可见性来帮助我们了解内部(无需阅读整个代码库)并帮助我们做出决定。

非常感谢,里奥

4

5 回答 5

2

假设我们正在运行多个网络服务器和一个数据库。是否支持?

是的,为了给大一新生提供方便(这对新项目很重要),meteor 里面嵌入了一个 MongoDB 服务器,当你使用“meteor”命令启动 web 服务器时,它也启动了一个 MongoDB 服务器,它的端口是两个添加Web服务器的端口......它很容易启动。此外,它提供了一种更改此行为的方法,请参阅此问题

因此,您可以在多个 Web 服务器之间共享一个数据库。

至于第二个问题,如你所见,流星很酷,就像魔法一样,但是有一个价格,所有的魔法都是有代价的,它在内部为你做了很多事情,它就像一个黑匣子,在某些情况下,如果你不知道里面发生了什么,这会让你发疯!因此,如果您想在大型正式项目中使用它,请小心!特别是它太年轻了,甚至文档都不够全面和详细,而且它正在迅速变化,它的开发人员可能太忙于开发新功能,他们没有时间回答你的问题......我在内部使用流星没有限制要求的项目,没关系,一个真正的数百万用户的项目?我认为现在这不是一个好主意。

于 2012-11-03T11:38:12.187 回答
2

谷歌集团的大卫格拉瑟的回答:

简短的回答是:如果 Meteor 无法扩展,我们在平台上所做的任何其他工作都将被浪费。数据库连接器的当前实现本质上是数据库连接器代码的原始草案。它现在非常适合开发,我们将确保它很快适用于大规模改进。

于 2012-11-16T21:49:40.533 回答
1

我一直在研究 Meteor 的缩放问题,我可以添加一些很棒的改进。

智能收藏是其中的核心。它是 Meteor 的全新 mongodb 驱动程序实现。

Smart Collection提供基于 MongoDB Oplog 的扩展支持。这是扩展流星应用程序的完美方式。

于 2013-08-01T16:01:32.490 回答
1

截至 2015 年 5 月 12 日,Meteor mongo 集合在规模上做得很好。这来自 Smart Collections 官方页面:“Smart Collection 现已退役,Meteor 的 Collection 实现已经修复了大多数性能瓶颈。它也像 Smart Collections 一样使用 MongoDB oplog。”

于 2015-05-12T23:48:41.303 回答
0

想提供一个更新的答案:

向客户端发送最少量的数据有助于加快 sub/pub 进程,并有助于防止意外数据泄露。这就是为什么仅指定客户端需要的字段是发布功能的最佳实践的原因。设置限制是明智的,尤其是对于理论上可能具有无限列表的视图。当限制查询的结果集时,通常也会对查询进行排序。因此,牢记索引对性能至关重要。

您还可以增加 MongoDB 的内存,使用 Kadira 和 Compose 等工具也有助于扩展。上面的引用和更多提示可以在这个关于扩展真正的流星应用程序的案例研究中找到。

于 2015-06-25T13:13:32.767 回答