深入浅出NodeJS笔记(一)

*这个系列是阅读并实践朴灵的著作《深入浅出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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值