1,
设计高性能、Web服务器的几个要点:事件驱动、非阻塞I/O
2,常见Web服务器架构:
Web服务器的功能:
- 接受HTTP请求(GET、POST、DELETE、PUT、PATCH)
- 处理HTTP请求(自己处理,或者请求别的程序处理)
- 作出响应(返回页面、文件、各类数据等)
常见的Web服务器架构:
- Nginx/Apache :负责接受HTTP请求,确定谁来处理请求,并返回请求结果。
- php-fpm/php模块:处理分配给自己的请求,并将处理结果返回给分配者。
常见请求种类:
- 请求文件:包括静态文件(网页、图片、前端JavaScript文件、css文件……),及程序处理得到的文件;
- 完成特定的操作:如登陆、获取特定数据等
Node.js的Web服务器:
- 不依赖其他特定的Web服务器软件(如Apache、Nginx、IIS……)
- Node.js代码处理请求的逻辑
- Node.js代码负责Web服务器的各种"配置"
3,
Node.js的应用场景
适合
JSON APIs——构建一个Rest/JSON API服务,Node.js可以充分发挥其非阻塞IO模型以及JavaScript对JSON的功能支持(如JSON.stringfy函数)
单页面、多Ajax请求应用——如Gmail,前端有大量的异步请求,需要服务后端有极高的响应速度
基于Node.js开发Unix命令行工具——Node.js可以大量生产子进程,并以流的方式输出,这使得它非常适合做Unix命令行工具
流式数据——传统的Web应用,通常会将HTTP请求和响应看成是原子事件。而Node.js会充分利用流式数据这个特点,构建非常酷的应用。如实时文件上传系统transloadit
准实时应用系统——如聊天系统、微博系统,但Javascript是有垃圾回收机制的,这就意味着,系统的响应时间是不平滑的(GC垃圾回收会导致系统这一时刻停止工作)。如果想要构建硬实时应用系统,Erlang是个不错的选择
不适合
CPU使用率较重、IO使用率较轻的应用——如视频编码、人工智能等,Node.js的优势无法发挥
简单Web应用——此类应用的特点是,流量低、物理架构简单,Node.js无法提供像Ruby的Rails或者Python的Django这样强大的框架
4,Node简介
深入浅出nodejs学习记录
5,Node模块
http://caibaojian.com/nodejs-book-record.html
6,