<转>学习node.js,为什么选择node.js,为什么NodeJs这么快

最近朋友介绍使用node.js开发,我就了解了一下大致的内容。整理一下大致的思路。


Node.js比Java更快?为什么NodeJS这么快


高并发性问题

但是,有一件事我们都认同:为了能适应高并发的情况(成千上万的连接),你的服务器需要采用异步非阻塞模式。你可能已经在IO操作中实现了这种方式。但问题是,如果你的服务器代码的任何部分可能产生阻塞,你都需要开启一个线程。在这种级别的并发下,你不能去为每个连接创建线程。所以整个代码路径都需要异步非阻塞式的, 不仅仅在输入输出层。这就是Node擅长的地方。 






java web通常的模式是使用开辟一块线程池,每当有一个用户请求,后台从线程池中取出空闲线程执行操作,直到操作成功返回结果。

node.JS的模式是单线程事件轮询,每当有一个用户请求,单线程立刻处理任务,不堵塞,如果有未接受完的数据,则通过事件进入轮询。

举个例子,接受10个字节,当接受8个字节时,java还需要等待另外2个字节后,才会返回操作。
node.js接受了8个字节,直接返回操作,直到2个字节收到,并时间通知。(弊端是如何确认这2个字节属于谁的)
这就是堵塞I/O和非阻塞I/O的区别

另外Java开辟多个线程,在多个线程中切换,本身也浪费了很多cpu资源。多个线程堵塞占用资源和内存,是系统瓶顶的主要原因。



参考性能比较:http://www.csdn.net/article/2013-10-28/2817306-performance-comparison-between-node-and-javaee
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值