热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Node.js非阻塞IO模型

如今,开发人员已将Node.js视为服务器端javascript执行平台。根据nodejs.org的说法,“Node.js是基于ChromeJavaSc

如今,开发人员已将Node.js视为服务器端Javascript执行平台。

根据nodejs.org的说法,“ Node.js是基于ChromeJavascript运行时构建的平台,可轻松构建快速,可扩展的网络应用程序。 Node.js使用事件驱动的非阻塞I / O模型,使其轻巧高效,非常适合跨分布式设备运行的数据密集型实时应用程序。”

现在,node.js打开了一种执行或服务于Web请求或任何其他类型的服务器请求的新方法-称为非阻塞IO操作。

我们遇到了以下链接– http://code.danyork.com/2011/01/25/node-js-doctors-offices-and-fast-food-restaurants-understanding-event-driven-programming/是展示node.js的非阻塞概念以及与实际工作场景相关的一种极好的方法。

作为我过去5-6年担任J2ee程序员的背景,我了解并理解了J2ee Environment中的Servlet编程模型,它是一种多线程编程模型,即,当Web请求到达基于Java的Web服务器时,该请求就会到达带有请求的servlet,然后servlet打开一个新线程来处理请求并将数据响应返回给客户端。 本质上共享的所有与数据库相关的方法或任何服务器资源密集型调用都应从servlet进行仔细处理,以避免任何死锁或其他与共享库有关的不希望的情况。

尽管通过这种方式,进程与服务器进程相比,在线程中分配了一部分并在线程中为Web请求提供服务,这些开销相对较小。 但是,即使在线程调用内执行请求和响应过程中某个数据库调用占用了相当长的时间,它仍将通过同步活动来阻止客户端的操作,从而阻止IO操作。

现在是时候了解在其上定义了node.js平台的非阻塞I / O了。

首先,node.js应用程序环境将在单线程编程模型上运行。

node.js中的所有Web请求和服务器请求调用都是非阻塞I / O。 一个Web请求进入node.js Web服务器,并且该Web服务器接受此请求并将此请求处理给侦听器对象以处理响应。 此外,此Web服务器将随时准备接受任何新的Web请求。 并且先前的响应处理将保留在队列中以执行其余操作。 现在,node.js环境负责准备Web响应,该响应又可以是来自实际应用程序的数据库调用。 此外,此数据库查询还可以包含回调函数,并且数据库的响应已准备就绪。 这些操作在队列中执行,也称为事件驱动编程,并且所有这些操作本质上都是异步的。

因此,这里讨论的重点是,node.js上下文中的所有函数调用都是非阻塞的输入输出操作。 在node.js环境中,执行操作由一个对象执行,并且操作的结果由回调函数处理。

我们将在这些应用程序体系结构的进一步工作中,进一步讨论node.js执行模型,事件驱动的编程和异步操作。

到此为止。 评论很好。

参考:来自Phlox Blog博客的JCG合作伙伴 Piyas De的Node.js非阻塞IO模型 。

翻译自: https://www.javacodegeeks.com/2013/12/node-js-non-blocking-io-model.html




推荐阅读
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 【MEGA DEAL】Ruby on Rails编码训练营(97%折扣)限时特惠!
    本文介绍了JCG Deals商店提供的Ruby on Rails编码训练营的超值优惠活动,现在只需29美元即可获得,原价为$1,296。Ruby on Rails是一种用于Web开发的编程语言,即使没有编程或网页设计经验,也能在几分钟内构建专业的网站。该训练营共有6门课程,包括使用Ruby on Rails进行BDD的课程,使用RSpec 3和Capybara等。限时特惠,机会难得,赶快行动吧! ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • ECMA262规定typeof操作符的返回值和instanceof的使用方法
    本文介绍了ECMA262规定的typeof操作符对不同类型的变量的返回值,以及instanceof操作符的使用方法。同时还提到了在不同浏览器中对正则表达式应用typeof操作符的返回值的差异。 ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
author-avatar
詹旭萌鸡蛋_544
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有