iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >node.js中有哪些适用场景
  • 407
分享到

node.js中有哪些适用场景

2024-04-02 19:04:59 407人浏览 八月长安
摘要

这篇文章主要介绍了node.js中有哪些适用场景,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 node.js是

这篇文章主要介绍了node.js中有哪些适用场景,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

node.js是一个基于Chrome javascript运行时建立的一个平台,其适用场景包括本地化的在线音乐应用、本地化的在线搜索应用、本地化的在线APP等。

本文操作环境:windows7系统、nodejs10.16.2版本、Dell G3电脑。

简单的说 Node.js 就是运行在服务端的 JavaScript。

Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

从原理上理解NodeJS的适用场景

NodeJS是近年来比较火的服务端JS平台,这一方面得益于其在后端处理高并发的卓越性能,另一方面在nodeJS平台上的npm、grunt、express等强大的代码与项目管理应用崛起,几乎重新定义了前端的工作方式和流程。

NodeJS的成功标志着它的强大,但是不是所有情况都适合应用NodeJS作为服务器端平台呢?

答案当然是否定的,而网上也是众说纷纭。那我们从原理出发了解一下NodeJS的适用情况。

在讲NodeJS之前我们不仿先看一下传统(以Apache为代表)的服务器端处理平台处理并发的方式。

1. Apache的多线程高并发模式

Apache是当前世界排名第一的WEB服务端软件,它由于支持多线程并发而受到广大服务器技术选型者的欢迎。但发展到后来,Apache在一些WEB的大型应用中也渐渐暴露出它的缺点:阻塞。

那有的同学会奇怪,Apache不是多线程处理并发吗,为什么还会出现阻塞呢?

要明白这一点我们首先需要了解线程这个概念

1.1 什么是线程?

我们引用官方的解释:线程可以独立运行的最小的CPU单位,可以在同一个进程里并发运行,共享该进程下的内存地址空间(注意这个特点)。

我们可以看到同一个进程下的线程是会共享相同的文件和内存的(内存地址空间),所以大家可以想象,当不同的线程需要占用同一个变量时,根据先到先得的原则,先到的线程在运作时,后来的线程只能在旁边等待,也就是加入到了阻塞排队序列。所以这就是造成线程阻塞的原因。

因此,虽说进程可以支持多个线程,它们看似同时执行,但互相之间并不同步。一个进程中的多个线程共享相同的内存地址空间,这就意味着它们可以访问相同的变量和对象,而且它们从同一堆中分配对象。尽管这让线程之间共享信息变得更容易,因为程序设计者必须小心,确保它们不会妨碍同一进程里的其它线程。

了解了多线程并行的缺陷后,我们就可以更好地理解NodeJS的强大所在了。因为NodeJS是异步单线程的!

2. NodeJS的异步I/O原理

我们先来看一段Apache请求数据库的代码:

node.js中有哪些适用场景

代码执行到第一行的时候线程会阻塞,等待query返回结果,然后继续处理。由于数据库查询、磁盘读写、网络通信等原因(所谓的I/O)阻塞时间会非常大(相对于CPU始终频率)。对于高并发的访问,一方面线程长期阻塞等待,另一方面为了应付新情求而不断添加新线程,会浪费大量系统资源,同时线程的增加也会也会占用大量的CPU时间来处理内存上下文切换。看看node.js怎么处理。

node.js中有哪些适用场景

看到没,就四个字:异步回调。query的第二个参数是一个回调函数,进程执行到db.query的时候不会等待结果返回,而是直接继续执行下面的语句,直到进入事件循环。当数据库执行结果返回的时候会将事件发送到事件队列,等到线程进入事件循环后才会调用之前的回调函数。更专业的说法是异步I/O。只要单线程就可以。

那为什么NodeJS做到单线程,却可以实现异步呢?在这里我们先上一幅图,直戳图中的Event queue

node.js中有哪些适用场景

看到没,NodeJS的工作原理其实就是事件循环。可以说每一条NodeJS的逻辑都是写在回调函数里面的,而回调函数都是有返回之后才异步执行的!

看到这里,你不禁会惊叹,NodeJS如果所有处理都异步,岂不是晓得飞了?错错错!当然不是,不要忘记,NodeJS实现这些的基础是单线程。没错,单线程!一条线程扛起所有操作!

你可以想象一下,NodeJS在寒风中面对着10万并发大军,OK,没问题,上来敌人一个扔到城里,上来一个又扔到城里。城里全民皆兵,可以很好地消化这些敌人。但如果上来一个类似于张飞赵云这样的人物,老Node心里一惨,和张飞大战300回合,把他打残了,再扔到城里。那后面的10万大军就得等这300回合。。。

所以这说明什么?说明NodeJS不是没有阻塞,而是阻塞不发生在后续回调的流程,而会发生在NodeJS本身对逻辑的计算和处理。我们已经知道,NodeJS的分发能力无比强大,可以循环事件进行异步回调。但如果在循环事件时遇到复杂的逻辑运算,那么单薄的单线程怎么支撑得起上百万的逻辑+并发呢?NodeJS它的所有I/O、网络通信等比较耗时的操作,都可以交给worker threads执行再回调,所以很快。但CPU的正常操作,它就只能自己抗了。

说到这里,各位对NodeJS的特性估计也大概有个谱了。所以说适用的场景基本是呼之欲出了~!

3. NodeJS的应用场景

既然NodeJS处理并发的能力强,但处理计算和逻辑的能力反而很弱,因此,如果我们把复杂的逻辑运算都搬到前端(客户端)完成,而NodeJS只需要提供异步I/O,这样就可以实现对高并发的高性能处理。情况就很多啦,比如:RESTFUL api、实时聊天、客户端逻辑强大的单页APP,具体的例子比如说:本地化的在线音乐应用,本地化的在线搜索应用,本地化的在线APP等。

顺便提一下Apache,打压了这么多,给颗甜枣。Apache由于其多线程高并发共享内存地址空间的特性,那就意味着如果服务器足够强大,处理器足够高核,Apache的运作将会非常良好,所以适用于(并发)异步处理相对较少,后台计算量大,后台业务逻辑复杂的应用程序。

感谢你能够认真阅读完这篇文章,希望小编分享的“node.js中有哪些适用场景”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网JavaScript频道,更多相关知识等着你来学习!

--结束END--

本文标题: node.js中有哪些适用场景

本文链接: https://www.lsjlt.com/news/87851.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • node.js中有哪些适用场景
    这篇文章主要介绍了node.js中有哪些适用场景,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 node.js是...
    99+
    2022-10-19
  • 云主机适用场景有哪些
    云主机适用于以下场景:1. 网站托管:云主机可以用来托管网站和应用程序,提供可靠的性能和稳定的网络连接。2. 应用开发和测试:云主机...
    99+
    2023-09-20
    云主机
  • node.js的应用场景有哪些
    Node.js的应用场景包括但不限于以下几个方面:1. 服务器端应用程序开发:Node.js是一种基于事件驱动的语言,非常适合构建高...
    99+
    2023-08-31
    node.js
  • redis有哪些合适的场景
    Redis适用于以下场景:1. 缓存:Redis的高性能和低延迟使其成为一个优秀的缓存解决方案,可以将频繁读取的数据缓存在Redis...
    99+
    2023-09-04
    redis
  • redis适用于哪些场景
    小编给大家分享一下redis适用于哪些场景,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!redis适合什么场景?1、缓存缓存现在...
    99+
    2022-10-18
  • vps云主机的适用场景有哪些
    vps云主机的适用场景有:1、当虚拟主机使用,vps云主机独立IP和带宽资源充足,且价格便宜,很适合用来当虚拟主机使用;2、搭建电子商务平台,vps云主机性价比高,能满足电子商务平台的需求;3、搭建数据共享平台,vps云主机安全度和稳定性高...
    99+
    2022-10-06
  • gpu云主机的适用场景有哪些
    GPU云主机适用于需要大量计算和处理图像、视频、音频、机器学习、深度学习、人工智能等领域的应用程序,例如:1. 图像处理和计算机视觉...
    99+
    2023-06-05
    gpu云主机 云主机
  • Node.js中子进程与应用场景有哪些
    这篇文章主要介绍了Node.js中子进程与应用场景有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。背景由于ons基于 C艹 封装而来,不...
    99+
    2022-10-19
  • TokuDB的优缺点和适用场景有哪些
    这篇文章主要介绍TokuDB的优缺点和适用场景有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! TokuDB优点:高压缩比,默认使用zlib进行压缩...
    99+
    2022-10-18
  • 新加坡云主机的适用场景有哪些
    新加坡云主机的适用场景有:1、当虚拟主机使用,新加坡云主机独立IP和带宽资源充足,且价格便宜,很适合用来当虚拟主机使用;2、搭建电子商务平台,新加坡云主机性价比高,能满足电子商务平台的需求;3、搭建数据共享平台,新加坡云主机安全度和稳定性高...
    99+
    2022-10-05
  • cdn加速适合哪些场景
    cdn加速适用的场景有以下几种站点加速站点中大量静态资源的加速分发,建议将站点内容进行动静分离,动态文件可以结合云服务器ECS,静态资源如各类型图片、html、css、js文件等,建议结合 对象存储OSS 存储海量静态资源,可以有效加速内容...
    99+
    2022-10-18
  • vuex中有哪些使用场景
    这篇文章将为大家详细讲解有关vuex中有哪些使用场景,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区别是,使...
    99+
    2023-06-14
  • Redis中有哪些应用场景
    本篇内容介绍了“Redis中有哪些应用场景”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Redis数据类型...
    99+
    2022-10-19
  • gpu云主机适用于哪些场景
    GPU云主机适用于需要进行大规模并行计算和处理大量图像、音频、视频等多媒体数据的场景,例如:1. 深度学习训练和推理:GPU云主机可...
    99+
    2023-06-17
    gpu云主机 云主机
  • 云服务器适用于哪些场景
    云服务器适用于以下场景:1. 网站和应用托管:云服务器可以用于托管网站、应用程序和数据库。它可以提供高可靠性和灵活性,以适应不同的流...
    99+
    2023-09-16
    云服务器
  • ip代理适合哪些场景使用
    这篇文章主要介绍“ip代理适合哪些场景使用”,在日常操作中,相信很多人在ip代理适合哪些场景使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ip代理适合哪些场景使用”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-25
  • 裸金属服务器适用行业场景有哪些
    裸金属服务器适用行业场景有:1、对安全和监管高要求的场景,如何金融、证券等行业;2、需要满足高性能计算的行业;3、需要将核心数据库部署在拥有资源专享、网络隔离、性能有保障等优质物理服务器上的行业;4、移动端游戏开发行业。具体内容如下:裸金属...
    99+
    2022-10-11
  • ddos高防云服务器适用的场景有哪些
    ddos高防云服务器适用的场景有:1、游戏行业,使用ddos高防云服务器能解决频繁掉线、访问缓慢等问题;2、互联网金融行业,使用dd...
    99+
    2023-02-08
  • ES6中Proxy使用场景有哪些
    小编给大家分享一下ES6中Proxy使用场景有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ES6 中的箭头函数、数组解构、...
    99+
    2022-10-19
  • ASP 中有哪些常见的数据类型,分别适用于哪些场景?
    ASP 是一种非常流行的 Web 开发技术,它使用 VBScript 或 JScript 作为脚本语言,可以方便地与数据库进行交互。在 ASP 中,数据类型是非常重要的一个概念,它决定了我们可以处理哪些数据以及如何处理它们。在本篇文章中,我...
    99+
    2023-07-28
    数据类型 分布式 关键字
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作