node.native会不会对node.js造成威胁?
发布于 12 年前 作者 youdoce 7508 次浏览 最后一次编辑是 8 年前

node.native 是 node.js 的一个 C++11 (aka C++0x) 的一个移植。

Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法”。当前的服务器程序有什么问题?我们来做个数学题。在 Java™ 和 PHP 这类语言中,每个连接都会生成一个新线程,每个新线程可能需要 2 MB 的配套内存。在一个拥有 8 GB RAM 的系统上,理论上最大的并发连接数量是 4,000 个用户。随着您的客户群的增长,如果希望您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。当然,这会增加服务器成本、流量成本和人工成本等成本。除这些成本上升外,还有一个潜在技术问题,即用户可能针对每个请求使用不同的服务器,因此,任何共享资源都必须在所有服务器之间共享。鉴于上述所有原因,整个 Web 应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈是:服务器能够处理的并发连接的最大数量。

Node 解决这个问题的方法是:更改连接到服务器的方式。每个连接发射一个在 Node 引擎的进程中运行的事件,而不是为每个连接生成一个新的 OS 线程(并为其分配一些配套内存)。Node 声称它绝不会死锁,因为它根本不允许使用锁,它不会直接阻塞 I/O 调用。Node 还宣称,运行它的服务器能支持数万个并发连接。

现在您有了一个能处理数万个并发连接的程序,那么您能通过 Node 实际构建什么呢?如果您有一个 Web 应用程序需要处理这么多连接,那将是一件很 “恐怖” 的事!那是一种 “如果您有这个问题,那么它根本不是问题” 的问题。在回答上面的问题之前,我们先看看 Node 的工作原理以及它的设计运行方式。

官方网站:http://www.open-open.com/lib/view/home/1328801430077

9 回复

最后更新时间5个月前

NodeJS 的 none-blocking evented I/O 还是要建立在 javascript 语言的基础上。javascript 提供了异步回调、闭包、动态执行等等其他语言(包括c++)所没有或欠缺的特性,因此才使得 NodeJS 能够发挥威力,非 javascript 的 port 根本没有任何意义。

native性能是好,但是目前是一个效率为王的时代,如果瓶颈不是cpu,那么使用native来开发绝对好似劣势。

性能好有屁用瓦,Node.js火热是因为JavaScript。

搞笑,怎么搞得似乎只有JavaScript有闭包一样,还有“异步回调”算什么语言特性,哪里用到“动态执行”了?

c++0x 有闭包,才使得这个项目成为可能。但有了rust-lang,就没他什么事了,可能这也是为什么最后更新时间是5个月前的原因了吧。

@jiyinyiyong 编译型语言,闭包,异步,并发,所以 node.native 这种项目就没意义了

用c++写web也太蛋疼了吧?有人尝试过用C++写web程序吗?

如果这个项目成型了,我觉得有一种情形是可能的。就是有人写了node.js --> node.native的转换器,直接可以把js程序编译成native-c来运行。

回到顶部