onvno / pokerface

日常技术文章阅读整理
3 stars 0 forks source link

20211012 - Node性能 #105

Open onvno opened 2 years ago

onvno commented 2 years ago

理解NodeJS 实现高并发原理

node分层

  1. Node.js 标准库

这部分是由 Javascript编写的,也就是我们使用过程中直接能调用的 API,在源码中的 lib 目录下可以看到。

  1. Node bindings

这一部分是Javascript 能够直接调用C/C++代码的关键。 主要作用是把nodejs底层实现的C/C++库暴露给Javascript 环境。 Nodejs 通过一层 C++ Binding,把 JS 传入 V8, V8 解析后交给 libuv 发起 asnyc I/O, 并等待消息循环调度。 可以将其理解为一个桥,桥这头是js,桥那头是C/C++,通过这个桥可以让js调用C/C++。

3.底层库

V8: Google 推出的 Javascript VM,也是 Node.js 为什么使用的是 Javascript的关键,它为 Javascript提供了在非浏览器端运行的环境,它的高效是 Node.js 之所以高效的原因之一。 Libuv:它为 Node.js 提供了跨平台,线程池,事件池,异步 I/O 等能力, Node.js高效的异步编程模型很大程度上归功于libuv的实现。。 C-ares:提供了异步处理 DNS 相关的能力。 http_parser、OpenSSL、zlib 等:提供包括 http 解析、SSL、数据压缩等其他的能力。

性能

单线程与多线程比较