首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是Meteor并发模型?

什么是Meteor并发模型?
EN

Stack Overflow用户
提问于 2013-08-11 17:16:02
回答 2查看 2.7K关注 0票数 14

我正在为Meteor应用程序编写服务器端逻辑,该应用程序必须更新内存中的状态以响应来自客户端的请求。这个应用程序需要强大的并发保证--特别是,我希望确保一次只执行一次更新。

我正在尝试弄清楚Meteor的并发模型是否支持这一点。文档提到Meteor是多线程的(这将是一个问题),但在搜索之后,我得到的印象是Meteor实际上使用了纤程(显式调度的线程)。如果这是真的,那么只要我的代码中需要原子运行的部分不进行任何Meteor调用(这涉及到IO,从而产生执行锁),我就是安全的。

真的是这样吗?在哪里可以找到有关Meteor并发模型的更多信息?

EN

回答 2

Stack Overflow用户

发布于 2013-08-13 00:53:19

好的,我看了一下Meteor的源代码,下面是它的工作原理:

1)在服务器端,Meteor独家使用纤程来处理并发。纤程类似于线程,不同的是上下文必须显式生成。这使得关于并发的推理变得更容易,但代价是一些纤程使另一些纤程处于饥饿状态。

2)所有对Meteor.call、Meteor.setInterval和任何集合操作的调用都封装在纤程中。这意味着所有这些调用都会产生上下文。

3)此外,纤维/期货模块的任何使用都会产生收益。

这种结构的结果是,如果你想写原子操作,只要避免访问Meteor框架提供的对象,你想要使之原子化的代码块。如果这个块确实需要(比方说)一个DB访问,那么您可以毫不费力地实现内存中的锁,但是对于我的应用程序来说,这个知识就足够了。我的核心更新函数只需要从已经读取的Mongo中调用它所需的所有文档。

票数 12
EN

Stack Overflow用户

发布于 2014-04-18 12:18:37

从流星文档中:

在流星中,您的服务器代码在每个请求的单个线程中运行,而不是在典型的Node异步回调风格中运行。我们发现线性执行模型更适合Meteor应用程序中的典型服务器代码。

http://docs.meteor.com/#structuringyourapp

有没有人知道这对性能的影响?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18170450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档