Node.js概览

Node.js 是一个令人兴奋的新平台,用于开发 Web 应用程序、应用程序服务器、任何类型的网络服务器或客户端以及通用编程。 它旨在通过服务器端 JavaScript、异步 I/O 和异步编程的巧妙组合,在网络应用程序中实现极高的可扩展性。

Node.js 虽然只有 10 年的历史,但它的知名度却迅速提高,现在正在发挥着重要的作用。 大大小小的公司都将其用于大型和小型项目。 例如,PayPal 已将许多服务从 Java 转换为 Node.js。

Node.js 架构不同于其他应用程序平台的典型选择。 线程被广泛用于扩展应用程序以填充 CPU,而 Node.js 由于线程固有的复杂性而避开线程。 据称,单线程事件驱动架构的内存占用低、吞吐量高、负载下的延迟曲线更好,并且编程模型更简单。 Node.js 平台正处于快速增长阶段,许多人将其视为使用 Java、PHP、Python 或 Ruby on Rails 的传统 Web 应用程序架构的引人注目的替代方案。

从本质上讲,它是一个独立的 JavaScript 引擎,具有适合通用编程的扩展,并且明确专注于应用程序服务器开发。 尽管我们将 Node.js 与应用程序服务器平台进行比较,但它并不是应用程序服务器。 相反,Node.js 是类似于 Python、Go 或 Java SE 的编程运行时。 虽然有用 Node.js 编写的 Web 应用程序框架和应用程序服务器,但它只是一个执行 JavaScript 程序的系统。

关键的架构选择是 Node.js 是事件驱动的,而不是多线程的。 Node.js 架构依赖于将阻塞操作分派到单线程事件循环,结果作为调用事件处理函数的事件返回给调用者。 在大多数情况下,事件会转换为由异步函数处理的承诺。 由于 Node.js 基于 Chrome 的 V8 JavaScript 引擎,因此 Chrome 中实现的性能和功能改进很快就会转移到 Node.js 平台。

Node.js 核心模块足够通用,可以实现执行任何 TCP 或 UDP 协议的任何类型的服务器,无论是域名系统 (DNS)、HTTP、互联网中继聊天 (IRC) 还是 FTP。 虽然它支持互联网服务器或客户端的开发,但其最大的用例是常规网站开发,代替 Apache/PHP 或 Rails 堆栈等技术,或补充现有网站 - 例如,添加实时聊天或监控 现有网站可以使用 Node.js 的 Socket.IO 库轻松完成。 Node.js 因其轻量级、高性能的特性经常被用作粘合服务。

一个特别有趣的组合是使用 Docker 和 Kubernetes 等工具或 AWS Lambda 等功能即服务平台在现代云基础设施上部署小型服务。 当将大型应用程序大规模划分为易于部署的微服务时,Node.js 效果很好。

对 Node.js 有了深入的了解后,让我们更深入地了解一下。