【问题标题】:How does horizontal scaling decrease load of a system?水平缩放如何减少系统的负载?
【发布时间】:2016-07-03 23:56:38
【问题描述】:

理论上,假设我有一个在负载均衡器下运行的 3 节点 LXD 集群。流量开始增加,我需要通过在集群中添加另一个节点来水平扩展。至此,我在 LB 下有了一个 4 节点的集群。

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

【问题讨论】:

  • 如果你经营一家超市,而且排队的人总是满的,你会雇佣新员工并增加可用排队的数量,还是会尝试培训员工更快地工作?
  • 这样会处理更多请求,很酷。这对包含节点的系统的整体 CPU 有什么影响?它仍然受到相同数量的打击,那么该值是否保持不变?
  • 我从来没有机会处理跨机器扩展,所以我不知道具体情况,但我的印象是每个“节点”都是自己的机器拥有自己的资源。
  • 一台机器有一个节点集群。

标签: docker containers scaling devops lxc


【解决方案1】:

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

如果 CPU 负载很高,那么添加另一个节点(在同一个盒子上)会降低吞吐量(延长响应时间——因为你要求 CPU 做更多它可以同时做的工作)。如果相反,由于阻塞 IO 导致负载很高,那么在盒子上添加另一个节点应该不会显着影响每个请求的处理时间。

在阻塞 IO 情况下,您可以添加新节点,直到 CPU 达到其阈值水平——您永远不想最大化 CPU,您希望阈值可能为 75%,以允许负载变化。

但是,这些天你不应该使用阻塞 io 来运行代码——你应该在 Node.js 或 Go 中编写所有内容;)

【讨论】:

  • 只是为了说明这一点。向具有 3 个节点和高 CPU 使用率的机器发送 HTTP 请求,然后添加第 4 个节点来弥补这一点会降低 CPU 使用率吗?这个想法对我来说仍然没有意义。
  • 我不这么认为。我想我说过,如果你在高 cpu 下添加更多工作,那么一切都会变慢。
【解决方案2】:

您确实需要更具体地了解您的设置,这可能不是最好的论坛。如果您的应用程序是多线程的并且您使用的是单台机器,那么理论上,如果您在节点上使用资源限制,则除了隔离特别“贪婪”客户端的能力之外,您不会通过添加更多节点获得任何收益。即使它是单线程的(例如 Node.js)并且您使用集群或子进程,您仍然可以最大限度地利用 CPU。

具有单个进程的稀疏节点的一个优点是您可以定制适合每个应用程序的资源限制。在某些时候,您将需要能够扩展到多个主机,尤其是在您需要高可用性的情况下。

【讨论】:

  • 感谢回复,哪个论坛最好?所以基本上正确的解决方案是扩展另一个裸机并重新配置负载均衡器以将请求分发到该机器。我懂了。谢谢
  • 我只是说你会在这里得到更好的结果,问更具体的问题,甚至指定你正在平衡的应用程序。 ServerFault 或 SuperUser 将是其他选项的开始,但请参阅here,因为它可能是一个灰色区域。
  • 但在高层次上,我会说如果您正在寻找最佳的可扩展性和可用性,主机之间的平衡将是谨慎的,并且如前所述,优化每个服务的资源限制。您可能还想查看最新版本的swarm
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 2016-08-12
  • 1970-01-01
相关资源
最近更新 更多