深入浅出node总结

node的诞生

2009年,Ryan Dahl为了写一个基于事件驱动、非阻塞I/O的web服务器,以达到更高的性能,提供Appache等服务器之外的选择。(设计高性能web服务器的几个要点:事件驱动、非阻塞I/O)

一、node特点

1.1异步I/O
在node中,绝大多数的操作都以异步的方式调用
异步I/O:在node中,我们可以从语言层面很自然的进行并行I/O操作,每个调用之间无需等待之前的I/O调用结束,在编程模型上可以极大提升效率
1.2事件与回调函数
事件的编程方式具有轻量级、松耦合、只关注事务点等优势,但是在多个异步任务的场景下,事件与事件之间各自独立,如何协作是一个问题
回调函数也是最好的接受异步调用返回数据的方式
1.3单线程
单线程最大的好处是不用像多线程那样处处在意状态的同步问题;
单线程也有它自身的弱点:
    **无法利用多核CPU**
    **错误会引起整个应用退出,应用的健壮性值得考验**
    **大量计算占用CPU导致无法继续调用异步I/O**
解决方案:node采用了与web workers相同的思路来解决单线程中达计算量的问题
1.4跨平台
目前,libuv已经成为许多系统实现跨平台的基础组件
1.5应用场景
    从单线程的角度来说,node处理I/O密集型的应用场景基本是没人反对的,node面向网络且擅长并行I/O,能偶有效地组织起更多的硬件资源,从而提供更多好的服务(I/O密集的优势主要在于node利用事件循环的处理能力,而不是启动每一个线程为每一个请求服务,资源占用极少)
    node虽然没有提供多线程的方式用于计算支持,但是还是有以下两个方式来充分利用CPU:
    **node可以通过编写c/c++扩展的方式更高效的利用cpu,将一些v8不能做到从性能极致的地方通过c/c++来实现,速度比java还快
    **如果单线程的node不能满足需求,甚至用了c/c++扩展后还觉得不够,那么通过子进程的方式,将一部分node进程当作常驻服务进程用于计算,然后利用进程间的消息来传递结果,将计算与I/O分离,这样能充分利用多CPU
1.6node的使用者
前后端编程环境统一
node带来的高性能I/O用于实时应用
并行I/O使得使用者可以更高效地利用分布式环境
并行I/O,有效利用稳定接口提升web渲染能力
云计算平台提供node支持
游戏开发领域
工具类应用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值