第一章 Node简介
1. Node初衷是基于V8创建一个轻量级的Web服务器,基于javascript。随着项目的发展,Node发展成为构建一个网络应用的基础框架。
2. 设计高性能Web服务器的要点:事件驱动、非阻塞I/O、异步
3. 考虑到高性能、事件驱动、没有历史包袱等因素,Javascript成了Node的实现语言
4. Node与Chrome的结构十分相似(除了HTML、WebKit和显卡UI)。
5. 在Node中,Javascript可以随心所欲地访问本地文件、可以搭建WebSocket服务器端,可以连接数据库,可以向Web Workers一样玩转多进程。
6. Node的特点:
(1)异步I/O: 在Node中,绝大多数操作都是以异步的方式进行调用,这样做的意义在于,Node中,可以从语言层面自然地进行并行I/O操作
(2)事件与回调函数
(3)单线程。Node保持了Javascript在浏览器中单线程的特点,Node中,Javascript与其余线程是无法共享状态的。单线程的好处是不用像多线程一样处处在意状态的同步问题,没有死锁的存在,也没有线程上下文切换所带来的性能上的开销.单线程的缺点是长期的CPU占用会导致后续的异步I/O无法发起调用,已经完成的异步I/O回调得不到及时执行。
Node中采用了与Web Workers相同的思路来解决单线程中大计算量的问题:child_process
(4)Node基于libuv实现跨平台。目前,libuv已经成为许多系统实现跨平台的基础组件。
7. Node的应用场景
(1)适用于I/O密集型应用
(2)对于CPU密集型的应用,要合理调度。
8. node的使用
(1)前后端编程语言环境统一
(2)Node带来的高性能I/O用于实时应用
(3)并行I/O可以更加高效利用分布式环境
(4)并行I/O有效利用稳定接口提升Web渲染能力
(5)云计算平台提供Node支持
(6)游戏开发领域和工具类应用