水平缩放如何降低系统的负载?

理论上说,我有一个负载均衡器下运行的3节点LXD集群。 stream量开始增加,我需要通过向集群添加另一个节点来进行水平扩展。 在这一点上,我有一个在LB下的4节点集群。

这种方法在哪些方面是有益的? 我试图了解它是否减less了包含节点的整个裸机的负载,或只是允许更多的请求处理。 如果有更多的请求被允许处理,我是否想要测量每个单独的容器的平均负载?

只要有足够的CPU周期和足够的networking带宽,添加一个新节点几乎总是可以同时处理更多的请求。 在某些情况下,这会降低每个请求的响应速度。

如果CPU负载很高,那么添加另一个节点(在同一个盒子中)会降低吞吐量(延长响应时间 – 因为您要求cpu做更多的工作,可以同时进行)。 如果阻塞IO的负载较高,则在该框上添加另一个节点不会明显影响每个请求的处理时间。

在阻塞IO情况下,您可以添加新的节点,直到CPU处于其阈值级别 – 您不希望最大化CPU,您希望阈值可能为75%,以允许负载变化。

然而,你不应该现在运行阻塞代码 – 你应该把所有的东西都写在Node.js或Go中;)

你真的需要得到更具体的关于你的设置,这可能不是最好的论坛。 如果您的应用程序是multithreading的,并且您使用的是单台机器,那么从理论上说,如果您正在使用节点上的资源限制,则除了能够隔离特别“贪婪”的客户端的能力之外,您还没有获得任何增加的节点。 即使它是单线程的(例如,Node.js),并且您使用了群集或subprocess,仍然可以最大化CPU。

具有单个进程的稀疏节点的一个优点是您可以调整适合于每个应用程序的资源限制。 在某一时刻,您将需要扩展到多个主机的能力,特别是在需要高可用性时。