什么是可扩展性?

时间:2012-02-23 19:40:03

标签: scalability

我读了许多比较编程语言的文章。

经常有一句话:可扩展性。我实际上试图寻找一个简单明了的解释,但还没有找到它。

您能解释一下可伸缩性意味着什么吗?

感谢。

4 个答案:

答案 0 :(得分:53)

可伸缩性是程序扩展的能力。例如,如果你可以在一个小型数据库(比如少于1000条记录)上做一些事情,那么高度可扩展的程序可以很好地适用于小型集合,也可以在大型集合上运行良好(比如数百万或数十亿条记录) )。

就像差距所说,资源需求将呈线性增长。查看Big-O表示法,了解有关程序如何在数据输入越大的情况下需要更多计算的更多详细信息。抛物线如Big-O(x ^ 2)对于大x输入的效率要远远低于像Big-O(x)这样线性的东西。

答案 1 :(得分:26)

可伸缩性是软件解决方案可以处理增加的工作量的特性。这可以是更大的数据集,更高的请求率,大小和速度的组合等。

在谈论系统可扩展性时,我们通常会区分

  • “向上扩展” - 通过使用更强大的硬件来增长的能力
  • “向外扩展” - 通过添加更多硬件来增长的能力

可以扩展的解决方案通常可以以更具成本效益的方式增长到更大的负载。这里要知道的一件重要事情是Amdahl's law,它表明扩展的能力受到软件顺序部分的限制

答案 2 :(得分:10)

这里已经有了很好的答案,只是想在这里添加一些东西。

可以通过两种方式实现可伸缩性:

  1. 垂直 - 通过这种方式,您可以添加更多硬件,例如更多RAM,处理器或更多节点。您还介绍了负载均衡器,它将根据所使用的路由算法帮助将传入呼叫路由到各种服务器。现在,当服务器之间共享负载时,应用程序可以处理更多负载。

  2. 水平 - 在水平扩展中,您可以设计/设计应用程序,使其在更多并行流量的情况下表现良好。你检查你如何管理内存,会话,缓存和如果您正在使用会话来维护用户信息,那么在负载很重的情况下,单个服务器可能会更忙于管理服务器,因此在这种情况下您可以检查无状态的可能性。它还可以并行响应来自同一用户的传入请求,而不是在使用会话时发生的串行回复。

答案 3 :(得分:9)

我的理解是,这意味着线性增加所需的输出只需要线性增加资源