【问题标题】:What is Scaling?什么是缩放?
【发布时间】:2010-12-30 03:33:02
【问题描述】:

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

【问题讨论】:

  • 我认为缩放是你在 Scala 中编程时所做的事情。 :-)
  • 你能提供一些上下文吗?您是否在询问是否要扩展网站和/或应用程序以处理更多用户/数据?
  • @ChrisF 好吧,更具体地说,我在谈论网站,以及这个词的一般含义。

标签: ruby-on-rails terminology scalability


【解决方案1】:

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

作为一个通用术语,scalability 表示项目对不同类型需求的响应能力。一个可扩展的项目是一个在跟上对其更多服务的请求时不会遇到任何问题的项目,或者至少不必因为无法处理请求而开始拒绝请求。

通常情况下,简单地将问题的规模扩大一到两个数量级就会暴露用于解决问题的策略的弱点。当这些弱点暴露出来时,可以说问题的解决方案不能“很好地扩展”。

例如,bogo sort 很容易实现,但是一旦您对多个事物进行排序,就需要很长时间才能得到您想要的答案。公平地说,bogo 排序不能很好地扩展。

...以及如何衡量它?

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

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

【讨论】:

    【解决方案2】:

    规模或可扩展性是指项目可以如何发展或扩展以响应需求:

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

    【讨论】:

      【解决方案3】:

      维基百科指出,可扩展性有多种用途:

      可扩展性可以从多个维度进行衡量,例如:

      • 负载可扩展性:分布式系统能够轻松地 扩大和收缩其资源池 容纳更重或更轻的 负载。或者,轻松与 一个系统或组件可以是 修改、添加或删除,以 适应不断变化的负载。
      • 地理可扩展性:保持性能的能力, 有用性,或可用性,无论 从集中扩展 局部区域更分散 地理格局。
      • 管理可扩展性:越来越多的能力 组织轻松共享单个 分布式系统。
      • 功能可扩展性:通过以下方式增强系统的能力 以最少的方式添加新功能 努力。

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

      更普遍地发现,将问题增加(例如)一个或两个数量级会引发一组全新的挑战,这些挑战不容易从较小的系统中预测

      【讨论】:

      • 那么我们能说这就是一秒钟内有多少人通过隧道吗?
      • 更多的是说如果人数增加 10 倍,答案可能不是再建 9 条隧道,而是另辟蹊径穿越群山。
      【解决方案4】:

      这是一个术语,用于表示系统随着时间的推移保持其性能的能力。

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

      例如:意思是当三个webapp服务器可以处理一千个并发用户时,增加三个更多个服务器可以处理双倍的数量,两个在这种情况下,一千个并发用户不少于

      如果系统不具备线性可扩展性的特性,则需要添加更多资源,例如硬件,不会带来任何额外的好处,例如,性能收敛到零:随着越来越多的服务器被投入到任务中。在上面的例子中,每台新服务器的额外好处越来越小,直到达到零。

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

      【讨论】:

        【解决方案5】:

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

        想一想,将设计用于 1000 次代表的订单输入系统扩展到可容纳 100,000 次代表需要什么。需要添加哪些硬件?数据库呢?简而言之,这就是可扩展性。

        【讨论】:

        • 不一定指用户数。例如,想象一个跟踪路上汽车的单用户系统。它可能已经在人口 10,000 的城镇中进行了测试,但它会扩展到人口数百万的城镇吗?
        • 没错,但我举了一个例子,我认为 SO 上的任何人都可以与之相关
        【解决方案6】:

        应用程序的可扩展性是指当应用程序负载发生变化时它能够如何执行。这通常受连接的用户数量、数据库中的数据量等影响。

        【讨论】:

          【解决方案7】:

          这是系统在不影响原始设计或系统的情况下接受增加的工作负载、更多功能、更改数据库等的能力。

          【讨论】:

            猜你喜欢
            • 2010-12-31
            • 2010-09-30
            • 2015-05-11
            • 2011-07-21
            • 1970-01-01
            • 2012-11-29
            • 2019-05-01
            相关资源
            最近更新 更多