我经常听到人们说RoR不可扩展,但我从来没有得到过任何恰当的答案,这是什么意思?所以,一个新手在这里问,什么是“可扩展性”,如何衡量它?
我经常听到人们说RoR不可扩展,但我从来没有得到过任何恰当的答案,这是什么意思?所以,一个新手在这里问,什么是“可扩展性”,如何衡量它?
可扩展性通常通过测试条件下系统如何应对不同需求来衡量。如果系统在不同种类的需求范围内都能跟上,人们可能会说它具有良好的可扩展性。特别是当它能够应对目前没有经历过的需求,但如果突然出现流行潮会被期望应对时,这一点尤为重要。(想想Slashdot/Digg/Reddit effects。)
维基百科指出,可扩展性具有广泛的用途:
可扩展性可以在各个方面进行衡量,例如:
- 负载可扩展性:分布式系统轻松扩展和收缩资源池以适应更重或更轻的负载的能力。或者说,系统或组件可以轻松修改、添加或删除,以适应不断变化的负载。
- 地理可扩展性:无论从集中在本地区到更分散的地理模式,都能够保持性能、实用性或可用性。
- 管理可扩展性:越来越多的组织可以轻松共享单个分布式系统的能力。
- 功能可扩展性:通过最小的努力添加新功能来增强系统的能力。
我所在的一个领域关注高吞吐量和并行计算的性能,随着处理器数量的增加,这一领域的性能表现备受关注。
更普遍地说,通常发现将问题增加一到两个数量级会带来完全不同的挑战,这些挑战不能从较小的系统中轻易预测。
可扩展性是指系统适应不断变化的用户数量的能力。随着我们现在尝试围绕云计算和租用计算时间来规划系统,这可能是不断增加或减少的用户数量。
想想看,如果要让一个设计用于1000个代表的订单录入系统适应10万个代表,需要添加什么硬件?数据库呢?简而言之,这就是可扩展性。
应用程序的可扩展性是指它在应用负载变化时的表现能力。这通常受到连接用户数量、数据库中数据量等因素的影响。
系统的可扩展性是指在不影响原始设计或系统的情况下,能够接受增加的工作负载、更多的功能和变化的数据库等。