介绍

Node.js中的可扩展性不是事后的想法。这是一个被烘焙成运行时核心的东西。 Node被命名为Node,以强调Node应用程序应该包含相互通信的多个小型分布式节点的想法。

您是否为Node应用程序运行多个节点?您是否在生产机器的每个CPU核心上运行一个Node进程,并负载平衡其中的所有请求?你知道Node有一个内置的模块来帮助吗?

节点的集群模块不仅提供了一个开箱即用的解决方案来利用机器的全部CPU功能,而且还有助于提高节点进程的可用性,并提供一个可以在零停机时重新启动整个应用程序的选项。本文涵盖了所有的善良和更多。

可扩展性策略

工作量是我们扩展应用程序最受欢迎的原因,但并不是唯一的原因。我们还扩展了应用程序,以增加其可用性和容错性。

扩展应用程序主要有三种不同的事情:

1 - 克隆

扩展大型应用程序最简单的方法是克隆多次,并将每个克隆的实例处理部分工作负载(例如使用负载平衡器)。这在开发时间方面并不花费很多,而且非常有效。此策略是您应该做的最小的工作,Node.js具有内置模块,集群,使您更容易在单个服务器上实施克隆策略。

2 - 分解

我们还可以根据功能和服务进行分解来扩展应用程序。这意味着具有多个不同的应用程序,具有不同的代码库,有时具有自己的专用数据库和用户界面。
这个策略通常与Microservice这个术语有关,其中micro表示这些服务应该尽可能的小,但实际上服务的大小不是什么重要的,而是执行松耦合和服务之间的高度凝聚力。这个战略的实施往往并不容易,可能会导致长期的意想不到的问题,但是当做好的时候,优势是巨大的。

3 - 分割

我们还可以将应用程序拆分成多个实例,每个实例只负责应用程序数据的一部分。这种策略通常被称为数据库中的水平分区或分片。数据分区需要在每个操作之前查找步骤,以确定要使用的应用程序的哪个实例。例如,也许我们希望根据他们的国家/地区或语言对用户进行分区。我们首先需要查找该信息。
成功扩大应用程序应该最终实现所有三种策略。 Node.js可以轻松实现,但我将重点介绍本文中的克隆策略,并探讨Node.js中可用的内置工具来实现。
请注意,在阅读本文之前,您需要对Node.js子进程了解很多。如果你还没有,我建议你先阅读另一篇文章: