首页 技术 正文
技术 2022年11月21日
0 收藏 837 点赞 2,918 浏览 20297 个字

前言

Nodejs目前处境稍显尴尬,很多语言都已经拥有异步非阻塞的能力。阿里的思路是比较合适的,但是必须要注意,绝对不能让node做太多的业务逻辑,他只适合接收生成好的数据,然后或渲染后,或直接发送到客户端。

为什么nodejs 还可以成为主流技术哪?

是因为nodejs 对于大前端来说还是非常重要的技术!!!如果你理解nodejs 的编程原理,很容易就会理解angularjs,reactjs 和vuejs 的设计原理。

NodeJS

Node是一个服务器端JavaScript解释器,用于方便地搭建响应速度快、易于扩展的网络应用。Node使用事件驱动,非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
Node是一个可以让JavaScript运行在浏览器之外的平台。它实现了诸如文件系统、模块、包、操作系统 API、网络通信等Core JavaScript没有或者不完善的功能。历史上将JavaScript移植到浏览器外的计划不止一个,但Node.js 是最出色的一个。

V8引擎

V8 JavaScript引擎是Google用于其Chrome浏览器的底层JavaScript引擎。很少有人考虑JavaScript在客户机上实际做了些什么!

实际上,JavaScript引擎负责解释并执行代码。Google使用V8创建了一个用C++编写的超快解释器,该解释器拥有另一个独特特征;您可以下载该引擎并将其嵌入任何应用程序。V8 JavaScript引擎并不仅限于在一个浏览器中运行。

因此,Node实际上会使用Google编写的V8 JavaScript引擎,并将其重建为可在服务器上使用。

事件驱动

在我们使用Java,PHP等语言实现编程的时候,我们面向对象编程是完美的编程设计,这使得他们对其他编程方法不屑一顾。却不知大名鼎鼎Node使用的却是事件驱动编程的思想。那什么是事件驱动编程。
事件驱动编程,为需要处理的事件编写相应的事件处理程序。代码在事件发生时执行。 
为需要处理的事件编写相应的事件处理程序。要理解事件驱动和程序,就需要与非事件驱动的程序进行比较。实际上,现代的程序大多是事件驱动的,比如多线程的程序,肯定是事件驱动的。早期则存在许多非事件驱动的程序,这样的程序,在需要等待某个条件触发时,会不断地检查这个条件,直到条件满足,这是很浪费cpu时间的。而事件驱动的程序,则有机会释放cpu从而进入睡眠态(注意是有机会,当然程序也可自行决定不释放cpu),当事件触发时被操作系统唤醒,这样就能更加有效地使用cpu。
来看一张简单的事件驱动模型(uml):

<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAC+AlgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9UgOKMUDpS0AJijFLRQAmKMUtFACYoxS0UAJijFLRQAmKMUtFACYoxS0UAJijFLRQAmKMUtFACYoxS0UAJijFLRQAmKMUtFACYoxS0UAJijFLRQAmKMUtFACYoxS1z/iDxfDpFwtjaQPqeruu5LKAgFR/edjwi+5/DNNJydkS5KKuzeYqiksQoHJJ6CuX1D4j6PbXElrZNLrN8hwbbTY/OZT6Mw+VP+BEVlyeHb3xEfM8SXpuIjyNLtCUtV9m/il/4FhT/dresrG30+2SC1gitYEGFihQKoHsBW6hFfFqZc0pbaGPJq/jDVf+Pez07Qoj91rt2uZgPdE2qD9HNNPh3Wbzm/8AFd+wPWKzhhgT89hf/wAerogtOC1XMlsg5L/EzmR8PdNkO64utVuj/wBNdTnx/wB8hwP0pw+HOiH+C8H/AG/z/wDxddMFp4WhVZrZi9lDscuPh3paHMFxqtsf+mWpz4/75L4/SpF8L6vZ82HivUEA6RXcUM6fqgb/AMerpgtKBU+0l11H7OPRWOaW+8ZaVzNbaZr0I6m2ZrWbHsjblJ+rCrVl8RdJluI7W/8AO0S+c7Rb6lH5RY+it91/+Ak1uhaZdWVvf27wXUEdzA4w0UyBlYe4NTeL3Q7SWzLqsrqCpBB5BFLiuP8A+EPutBYy+Gb42Kjn+zLomS0f2Ufei/4DwP7prS0TxYl/dnTr+2fStXVdxtJiCJB/ejfo6/TkdwKhx6opT1tLQ3sUYopag0ExRilooATFGKWigBMUYpaKAExRilooATFGKWigBMUYpaKAExRilooATFGKWigBMUYpaKAExRilooATFGKWigBMUYpaKAExRilooATFGKWigBMUUtFACDpS0g6UtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVieL9fbw7ozzQx+fezOsFrB/z0lY4UfTufYU0ruyE2krspeIfEFxNenRtHZRfbQ1xdMNyWiHoSO7n+FfxPFJo+iWui27R26ku7b5p5Dukmfuzt3P8AkU3w/oi6Jp4haQ3F1Ixmubg9ZpT95v6AdgBWoFro0irIyScvekIFpwWlC08LUXLGhacFpwFKFpAIFpwFKFp4WkA0LTgtKBTgtIBAKcBilAzTgtK47CBao61oFnr9oILuMnad8UqHbJC/Z0bqpHrWiBilpXa2Cye5zmj6xdafqCaLrLh7pgTa3oXat2o6jHaQDqO/UV0dZfiPQo/EOlvas5hmUiSC4T70Mq8q4+h/TI71X8Ia9Jrulk3SCHUrWRra8hH8Eq8HHseCD6GqauuZEp2fKzcoooqDQKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBB0paQdKWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK4jUm/tn4kQQn5oNGszOR6Tynauf+AB67euH0QbvHfjBmH7zNmMf7IjfH8zWtPqzK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" alt="">

事件驱动模型主要包含3个对象:事件源、事件和事件处理程序。

  事件源:产生事件的地方(html元素)

  事件:点击/鼠标操作/键盘操作等等

  事件对象:当某个事件发生时,可能会产生一个事件对象,该时间对象会封装好该时间的信息,传递给事件处理程序

  事件处理程序:响应用户事件的代码

运行原理

当我们搜索Node.js时,夺眶而出的关键字就是 “单线程,异步I/O,事件驱动”,应用程序的请求过程可以分为俩个部分:CPU运算和I/O读写,CPU计算速度通常远高于磁盘读写速度,这就导致CPU运算已经完成,但是不得不等待磁盘I/O任务完成之后再继续接下来的业务。
所以I/O才是应用程序的瓶颈所在,在I/O密集型业务中,假设请求需要100ms来完成,其中99ms化在I/O上。如果需要优化应用程序,让他能同时处理更多的请求,我们会采用多线程,同时开启100个、1000个线程来提高我们请求处理,当然这也是一种可观的方案。
但是由于一个CPU核心在一个时刻只能做一件事情,操作系统只能通过将CPU切分为时间片的方法,让线程可以较为均匀的使用CPU资源。但操作系统在内核切换线程的同时也要切换线程的上线文,当线程数量过多时,时间将会被消耗在上下文切换中。所以在大并发时,多线程结构还是无法做到强大的伸缩性。
那么是否可以另辟蹊径呢?!我们先来看看单线程,《深入浅出Node》一书提到 “单线程的最大好处,是不用像多线程编程那样处处在意状态的同步问题,这里没有死锁的存在,也没有线程上下文切换所带来的性能上的开销”,那么一个线程一次只能处理一个请求岂不是无稽之谈,先让我们看张图:

Node.js的单线程并不是真正的单线程,只是开启了单个线程进行业务处理(cpu的运算),同时开启了其他线程专门处理I/O。当一个指令到达主线程,主线程发现有I/O之后,直接把这个事件传给I/O线程,不会等待I/O结束后,再去处理下面的业务,而是拿到一个状态后立即往下走,这就是“单线程”、“异步I/O”。
I/O操作完之后呢?Node.js的I/O 处理完之后会有一个回调事件,这个事件会放在一个事件处理队列里头,在进程启动时node会创建一个类似于While(true)的循环,它的每一次轮询都会去查看是否有事件需要处理,是否有事件关联的回调函数需要处理,如果有就处理,然后加入下一个轮询,如果没有就退出进程,这就是所谓的“事件驱动”。这也从Node的角度解释了什么是”事件驱动”。
在node.js中,事件主要来源于网络请求,文件I/O等,根据事件的不同对观察者进行了分类,有文件I/O观察者,网络I/O观察者。事件驱动是一个典型的生产者/消费者模型,请求到达观察者那里,事件循环从观察者进行消费,主线程就可以马不停蹄的只关注业务不用再去进行I/O等待。

优点

Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法”。我们来看一个简单的例子,在 Java和 PHP 这类语言中,每个连接都会生成一个新线程,每个新线程可能需要 2 MB 的配套内存。在一个拥有 8 GB RAM 的系统上,理论上最大的并发连接数量是 4,000 个用户。随着您的客户群的增长,如果希望您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。所以在传统的后台开发中,整个 Web 应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈是:服务器能够处理的并发连接的最大数量。这个不同的架构承载的并发数量是不一致的。
而Node的出现就是为了解决这个问题:更改连接到服务器的方式。在Node 声称它不允许使用锁,它不会直接阻塞 I/O 调用。Node在每个连接发射一个在 Node 引擎的进程中运行的事件,而不是为每个连接生成一个新的 OS 线程(并为其分配一些配套内存)。

缺点

如上所述,nodejs的机制是单线程,这个线程里面,有一个事件循环机制,处理所有的请求。在事件处理过程中,它会智能地将一些涉及到IO、网络通信等耗时比较长的操作,交由worker threads去执行,执行完了再回调,这就是所谓的异步IO非阻塞吧。但是,那些非IO操作,只用CPU计算的操作,它就自己扛了,比如算什么斐波那契数列之类。它是单线程,这些自己扛的任务要一个接着一个地完成,前面那个没完成,后面的只能干等。因此,对CPU要求比较高的CPU密集型任务多的话,就有可能会造成号称高性能,适合高并发的node.js服务器反应缓慢。

适合场景

1、RESTful API

这是适合 Node 的理想情况,因为您可以构建它来处理数万条连接。它仍然不需要大量逻辑;它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的 API 需求。

2、实时程序

比如聊天服务

聊天应用程序是最能体现 Node.js 优点的例子:轻量级、高流量并且能良好的应对跨平台设备上运行密集型数据(虽然计算能力低)。同时,聊天也是一个非常值得学习的用例,因为它很简单,并且涵盖了目前为止一个典型的 Node.js 会用到的大部分解决方案。

3、单页APP

ajax很多。现在单页的机制似乎很流行,比如phonegap做出来的APP,一个页面包打天下的例子比比皆是。


总而言之,NodeJS适合运用在高并发、I/O密集、少量业务逻辑的场景

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,905
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,430
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,247
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,058
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,690
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,727