首页 技术 正文
技术 2022年11月21日
0 收藏 684 点赞 3,687 浏览 63316 个字

前言

本来是想只做一个Nodejs运行原理-科普篇,但是收到了不少私信,要我多分享一些更进阶,更详细的内容,所以我会在接下来的两个月里继续更新Nodejs运行原理。

PS:此系列只做Nodejs的运行原理(架构,libuv,v8 etc),并不介绍Nodejs功能以及使用方法。

本文以两个view来看Nodejs的架构,一个是从模块依赖的角度,另一个是从函数调用的角度。

1.模块依赖

<img src="data:image/jpeg;base64,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f/j1H9s3/wD0LOq/9/LX/wCPUAbFFY/9s3//AELOq/8Afy1/+PUf2zf/APQs6r/38tf/AI9QBsUVj/2zf/8AQs6r/wB/LX/49R/bN/8A9Czqv/fy1/8Aj1AGxRWP/bN//wBCzqv/AH8tf/j1H9s3/wD0LOq/9/LX/wCPUAbFFY/9s3//AELOq/8Afy1/+PUf2zf/APQs6r/38tf/AI9QAeE/+RN0P/sHwf8Aota2KzfD1rNY+GtKs7lNk8FnDFIuQdrKgBGRx1FaVABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGJ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AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigA+36//wBArTf/AAYyf/GKPt+v/wDQK03/AMGMn/xiiigCx4dt7yO81K4vY4I5LuYSiOGUyBQI40+8VXn5CeneugoooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//ZAA==" alt="">

如上图所示:your code 为编辑代码,node.js 核心,Host environment 为宿主环境(提供各种服务,如文件管理,多线程,多进程,IO etc)

1.1node.js

这里重点介绍,nodejs组成部分:v8 engine, libuv, builtin modules, native modules以及其他辅助服务。

v8 engine:主要有两个作用 1.虚拟机的功能,执行js代码(自己的代码,第三方的代码和native modules的代码)。

               2.提供C++函数接口,为nodejs提供v8初始化,创建context,scope等。

libuv:它是基于事件驱动的异步IO模型库,我们的js代码发出请求,最终由libuv完成,而我们所设置的回调函数则是在libuv触发。

builtin modules:它是由C++代码写成各类模块,包含了crypto,zlib, file stream etc 基础功能。(v8提供了函数接口,libuv提供异步IO模型库,以及一些nodejs函数,为builtin modules提供服务)。

native modules:它是由js写成,提供我们应用程序调用的库,同时这些模块又依赖builtin modules来获取相应的服务支持

简单总结一下:如果把nodejs看做一个黑匣子,起暴露给开发者的接口则是native modules,当我们发起请求时,请求自上而下,穿越native modules,通过builtin modules将请求传送至v8,libuv和其他辅助服务,请求结束,则从下回溯至上,最终调用我们的回调函数。

1.2your code

当我们执行node xxx.js的时候,node会先做一些v8初试化,libuv启动的工作,然后交由v8来执行native modules以及我们的js代码。

2.函数调用

这里我们以建立http server为例

如上图所示:v8执行js代码 server.listen()时,会通过一些基础服务到TCPWrap::listen(),TCPWrap是nodejs的內建模块,其通过libuv的api uv_listen()的方式,由libuv来完成异步调用。

图中1,2,3,4,5步骤标明了调用和返回的路径,这几步很快结束,留下callback TCPWrap::OnConnection()等着所需要的数据准备好后被调用。

libuv在得到所需要的请求后,会调用callback TCPWrap::OnConnection(),在该函数最后通过 tcp_wrap->MakeCallback(env->onconnection_string(), ARRAY_SIZE(argv), argv) 调用V8 engine中的JavaScript callback。

Node.js内建模块http其实是建立在模块net之上的。如果看net.js代码会发现,其通过 new TCP() 返回的类对象完成后续的TCP connect, bind, open等socket动作。

可以看到Node.js做的工作像是一座桥。左手V8,右手libuv,将2者有机连接在一起。例如HandleWrap::HandleWrap()中记录了V8 instance中的JavaScript对象以及TCPWrap对象。这样在TCPWrap::OnConnection()中可以拿到这两个对象,执行后续的callback调用。

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