深入浅出NodeJS笔记(一)

来源:互联网 发布:asp域名授权码程序dll 编辑:程序博客网 时间:2024/06/02 02:40

*这个系列是阅读并实践朴灵的著作《深入浅出NodeJS》一书的笔记*


1 Node简介

1.在底层构建了很多异步I/OAPI,意义在于可以从语言层面很自然地进行并行I/O操作。

2. JavaScript是一门图灵完备的语言。

3. Node的结构与Chrome相似,都是基于事件驱动的异步架构。

4. Node将前端浏览器中广泛且成熟的事件引入后端,配合异步I/O,将事件点暴露给业务逻辑。(例如一个http服务器连接,请求代码)

5. Node保持了Javascript在浏览器中单线程的特点。最大好处是避免同步、死锁问题和上下文切换的开销。缺点是无法利用多核CPU错误会引起整个应用退出(健壮性),大量计算占用CPU导致无法继续调用异步I/O。对于第三点缺陷,浏览器JS有类似的问题,JSUI共用一个线程,长时间执行JS会导致UI渲染和响应被中断。HTML5定制了Web Workers标准解决这个问题,其可以创建工作线程进行计算,工作线程不阻塞主线程,通过消息传递的方式返回运行结果,不能访问主线程的UINode的解决方案是childe_process。通过创建子进程,分解掉大量的计算,通过进程之间事件消息传递结果。同时可以应对单线程的健壮性和无法利用多核CPU的问题。

6. Node通过架构改动实现跨平台,在系统与NodeJS上层模块之间构建一层平台层架构:libuv。也可以通过libuv实现Node的第三方c++模块的跨平台。

7. Node面向网络且擅长并行I/O,适合I/O密集型的场景。

8.有两种方式来充分利用CPU

    a.编写C++扩展高效利用CPU

    b.通过子进程的方式,将一部分Node进程当作常驻服务进程用于计算,然后利用进程间的消息传递结果,将计算与I/O分离

9.阿里巴巴使用Node做分布式数据查询。Node高效利用并行I/O的过程,也是高效实用数据库的过程。


0 0
原创粉丝点击