什么是缩放?

时间:2009-12-26 17:12:40

标签: ruby-on-rails terminology scalability

我总是得到这个反对RoR的论点,它不会扩展,但我从来没有得到任何适当的答案,这真的意味着什么?所以这里有一个新手问,这个“缩放”到底是什么,你如何衡量它?

7 个答案:

答案 0 :(得分:10)

  

这到底是什么“缩放”...

作为一般术语, scalability 表示项目对不同类型需求的响应能力。一个可以很好地扩展的项目是一个在满足更多服务请求时没有任何问题的项目 - 或者至少不必开始拒绝请求,因为它无法处理它们。

通常情况下,简单地将问题的大小增加一个数量级或两个数量级会暴露出用于解决问题的策略中的弱点。当这些弱点暴露出来时,可能会说问题的解决方案并没有“很好地扩展”。

例如, bogo sort 很容易实现,但只要您排序的东西超过少数,就会花很长时间才能得到答案想。可以公平地说,bogo排序不能很好地扩展。

  

......以及你如何衡量它?

这是一个更难回答的问题。通常,没有与可伸缩性相关的单元;诸如“该系统的可扩展性是这个系统的N倍”之类的陈述充其量只是苹果与橙子的比较。

可扩展性通常通过查看系统在测试条件下如何满足不同类型的需求来衡量。人们可能会说,如果在不同类型的广泛需求下,它可以跟上,那么系统可以很好地扩展。如果它能够满足当前没有经验的需求,尤其如此,如果人气突然激增,可能会出现这种情况。 (想想 Slashdot/Digg/Reddit effects 。)

答案 1 :(得分:9)

缩放或可伸缩性是指项目如何增长或扩展以响应需求:

http://en.wikipedia.org/wiki/Scalability

答案 2 :(得分:2)

如维基百科所示,可扩展性具有广泛的用途:

可扩展性可以在各个方面进行衡量,例如:

  
      
  • 负载可扩展性:分布式系统轻松实现的能力   扩展和收缩其资源池   以适应更重或更轻   负载。或者,方便   系统或组件可以是哪个   修改,添加或删除   适应不断变化的负荷。
  •   
  • 地理可扩展性:保持性能的能力,   有用性,或可用性,无论如何   从集中扩张   当地面积更加分散   地理模式。
  •   
  • 管理可扩展性:越来越多的能力   组织轻松分享单一   分布式系统。
  •   
  • 功能可扩展性:增强系统的能力   以最小的方式添加新功能   努力。
  •   

在我工作的一个领域,随着处理器数量的增加,我们关注高吞吐量和并行计算的性能。

更一般地说,经常发现将问题增加(比如)一个或两个数量级会引发一系列全新的挑战,这些挑战在较小的系统中难以预测

答案 3 :(得分:2)

这是一个表达系统随着时间的推移而保持其性能的能力的术语。

理想情况下,您需要的是一个达到线性可扩展性的系统。这意味着通过添加新的资源单元,系统的执行能力同样增强。

例如:这意味着,当三个webapp服务器可以处理一千个并发用户时,通过添加三个更多服务器,它可以处理两倍的数量,两个在这种情况下,千位并发用户且不少

如果系统不具有线性可扩展性,则可以添加更多资源,例如:硬件,不会带来任何额外的好处,例如,性能收敛到零:随着越来越多的服务器被用于任务。在上面的示例中,每个新服务器的额外好处变得越来越小,直到达到零。

因此,可伸缩性是告诉您从给定输入中获得的输出的因素。理论上,它的值范围介于0和正无穷大之间。在实践中,任何等于1的东西都是最理想的......

答案 4 :(得分:1)

可伸缩性是指系统能够容纳不断变化的用户数。这可能会增加或减少用户数量,因为我们现在尝试围绕云计算和租用计算时间来规划我们的系统。

考虑制作一个为1000个销售规模设计的订单输入系统所涉及的内容,以容纳100,000个销售代表。需要添加什么硬件?那数据库怎么样?简而言之,这是可扩展性。

答案 5 :(得分:0)

应用程序的可伸缩性是指在应用程序的负载发生变化时它的执行方式。这通常受连接用户数量,数据库中数据量等因素的影响

答案 6 :(得分:0)

系统能够接受增加的工作量,更多功能,更改数据库......而不会影响原始设计或系统。

相关问题