【问题标题】:Reactive programming, scaling and Meteor反应式编程、缩放和 Meteor
【发布时间】:2012-11-02 20:15:08
【问题描述】:

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

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

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

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

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

非常感谢, 利奥

【问题讨论】:

  • 有人在 2014 年对这个问题有了新的答案???谢谢

标签: web-applications meteor reactive-programming horizontal-scaling


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢@Aaron。这确实与我考虑的方向相同。
【解决方案2】:

David Glasser 来自google group 的回答:

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

【讨论】:

  • Smart Collections 就是所谓的改进版。您今天可以使用它。 (这是社区贡献,不是核心内容)
【解决方案3】:

我正在处理 Meteor 的扩展问题,我可以添加一些很棒的改进。

Smart Collections 是这个的核心。它是 Meteor 的全新 mongodb 驱动实现。

Smart Collection 可以做到MongoDB Oplog based scaling support。这是扩展流星应用程序的完美方式。

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      想提供一个更新的答案:

      向客户端发送最少量的数据有助于使 sub/pub 处理速度更快,并有助于防止意外数据 接触。这就是为什么只指定客户需要的字段是 发布功能的最佳实践。设置限制是明智的, 特别是对于理论上可能有无限列表的视图。 在限制查询的结果集时,通常查询也是 排序。因此,牢记索引对性能至关重要。

      您还可以增加 MongoDB 的内存,使用 Kadira 和 Compose 等工具也有助于扩展。上面的引用和更多提示可以在这个case study about scaling a real meteor app.

      上找到

      【讨论】:

        猜你喜欢
        • 2016-05-11
        • 1970-01-01
        • 1970-01-01
        • 2019-03-16
        • 2011-07-20
        • 1970-01-01
        • 2020-12-25
        • 1970-01-01
        • 2019-10-28
        相关资源
        最近更新 更多