javascript - Node.js 中的异步查询是否有助于克服实时数据流中的延迟?

标签 javascript node.js asynchronous real-time

Node.js 新手,正在使用 Node.js 研究实时数据流 - 我知道实时数据流是开发 Node.js 的主要原因。有人可以回答或提供一篇文章来说明异步查询是否有助于克服实时数据流中的延迟吗?

最佳答案

node.js 背后的想法之一是服务器永远不应该阻塞等待 I/O(网络、磁盘读/写、硬件接口(interface)等)。为了在 Node.js 编程中实现这一点,必须始终使用异步接口(interface)来执行这些可能耗时的操作。

以这种方式编写服务器,然后编写以这种方式使用它的代码有很多优点,因为核心服务器进程本身的可用性相对较高(因为它从不调用可能会阻塞一段时间的函数) )。因此,单个服务器进程可以同时处理很多事情。

其他允许阻塞 I/O 的服务器发现它们会严重无响应,除非它们实现多个线程(因此它们也可以同时处理多个请求)。即使给定的 CPU 一次只处理一件事,但当您有多个线程时,可能有 9 个线程都在某种 I/O 上被阻塞,而第 10 个线程实际上正在将数据返回到请求。

人们发现,node.js 方式对于某些类型的操作具有一定的规模优势,因为异步编程最终是一种服务大量 I/O 请求的资源较低的方法,然后是一种需要大量资源的方法线程。还有其他优点(例如,node.js 中的非线程请求与其他服务器中的线程请求之间的同步要简单得多)。

node.js 模型也有很多缺点(编写异步代码的编程负担、不公平的调度模型等......)。

<小时/>

好的,所有这些都是您最初问题的背景:

May someone either answer or provide an article to if Asynchronous Queries help overcome latency in real-time data streaming?

答案是肯定的。如果您有一台执行大量 I/O 的服务器(并且我假设“实时数据流”可能符合繁重 I/O 的条件),那么异步 I/O 模型比线程同步模型更具可扩展性模型。它将一些编程负担转移给了开发人员,但也从中获得了一些好处。我说“有点”是因为这里没有绝对的事情。一切都取决于情况的具体情况以及正在做什么以及如何完成。

但是,如果我需要向大量客户端进行近乎实时的数据流,我可能会使用使用异步 I/O 模型(如 Node.js)的服务器集群。

另请注意,您不必使用 Node.js 进行异步 I/O 编程。也有能力在其他一些环境中进行此类开发。但是,它是 Node.js 设计的核心特征。

关于javascript - Node.js 中的异步查询是否有助于克服实时数据流中的延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28789539/

相关文章:

html - 具有完整性的异步 css

c# - Parallel.Foreach 和 Task 冲突

javascript - jQuery .click() 仅在加载时触发

javascript - 构建和部署 typescript/node.js 应用程序的明智方法

javascript - jQuery 中意外的回调行为

javascript - 如何使用输入在 Node.js 中运行批处理文件并获得输出

node.js - 在 Node.js 上使用 Selenium Webdriver Chrome 的阅读控制台

swift - 为什么 DispatchQueue.main.async 在 Swift 应用程序中不起作用?

javascript - 生成仅包含 JSON 中某些属性的 JS 对象的 JSON

javascript - Ember - 计算属性(这是一个数组)在将项目添加到数组时不获取更新值