假设单核CPU下安装一个node程序, 程序里面很简单, 一个http服务器, 有请求进来, 延迟5秒返回结果(可以理解了5s同步做一些事情)
当有3个请求同时进来时, 请问结果会是哪个场景:
场景1:第一个请求在5秒后拿到结果, 第二个和第三个是在10s和15s后拿到结果
场景2:所有请求都是5秒后拿到结果
如果换成java+tomcat, 会是哪种场景, 谢谢大家!
假设单核CPU下安装一个node程序, 程序里面很简单, 一个http服务器, 有请求进来, 延迟5秒返回结果(可以理解了5s同步做一些事情)
当有3个请求同时进来时, 请问结果会是哪个场景:
场景1:第一个请求在5秒后拿到结果, 第二个和第三个是在10s和15s后拿到结果
场景2:所有请求都是5秒后拿到结果
如果换成java+tomcat, 会是哪种场景, 谢谢大家!
8 回答4.8k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
3 回答4.1k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
如果是
同步的
延迟 5秒,且 node.js 为简单的单线程运行,不加入 cluster 等优化那么,多个请求同时发起时,场景1
但通常在 node.js 很少真的碰到完全阻塞的
同步等待 5 秒
,如果是下列情况:那结果当然是
场景2
至于 Java ,并发是多线程支撑的,在机能足够的情况下,比如并发仅仅为3,可以粗略的视为是:场景2。当然由于涉及到线程开销,在并发量上升之后,其内存的占用将远超 node.js 的模型
实际上这也是为什么我们说 node.js 更加适合 IO密集 低运算 的场景。可以参考我的另一个回答