【问题标题】:What is the difference between scalability and elasticity?可扩展性和弹性之间有什么区别?
【发布时间】:2012-03-24 04:19:55
【问题描述】:

我听说很多人可以互换使用这两个术语。但是,在我看来,它们之间是有区别的:

可扩展性 - 软件系统在其当前硬件资源(纵向扩展)或当前和额外的硬件资源(横向扩展)而不中断应用程序服务;

弹性 - 硬件层下面(通常是云基础设施)增加或缩小该硬件层提供给上面软件层的物理资源量的能力.增加/减少由预先定义的业务规则触发(通常与应用程序的需求相关)。增加/减少在没有物理服务中断的情况下即时发生。

同样,可扩展性是软件架构的一个特征,它与服务更高数量的工作负载相关,其中弹性是下面物理层的特征,完全与硬件预算优化有关。

我对这两个非功能性架构特征有区别吗? 谁能给出具体的例子,以便我们可以在这两个术语之间划出更鲜明的界限?

【问题讨论】:

    标签: amazon-web-services cloud scalability elasticity


    【解决方案1】:

    可扩展性是系统仅通过增加资源使硬件更强大(纵向扩展)或添加额外节点(横向扩展)来适应更大负载的能力。

    弹性是动态适应负载所需的资源的能力,通常与横向扩展相关。因此,当负载增加时,您可以通过添加更多资源来扩展,而当需求减弱时,您会缩减并删除不需要的资源。 弹性在云环境中最为重要,在这种环境中,您一方面按使用付费,一方面不想为当前不需要的资源付费,另一方面又希望在需要时满足不断增长的需求。

    【讨论】:

    • “可扩展和弹性”是多余的吗?没有可扩展性的东西可以有弹性吗?
    • 某些东西可能具有有限的可伸缩性和弹性,但一般来说弹性意味着利用可伸缩性并动态添加删除资源。
    • 可扩展性在通过添加额外资源增加工作负载的情况下表现如前,还是在通过添加额外资源增加工作负载的情况下表现比以前更好?
    • 这是关于使用更多资源来处理更多负载的性能。在“通常”负载下,解决方案可能会表现得更好,但这也可能是真的,但这取决于工作的性质(这取决于阿姆达尔定律en.wikipedia.org/wiki/Amdahl%27s_law
    • 如果我理解正确,我应该说可扩展性总是在增加(向上或向外)并且弹性是两个方向吗?我的理解对吗?但是在云中,我听到了“自动缩放”功能这个词,但没有听到任何题为“弹性”的功能。可以举个实际例子吗?
    【解决方案2】:

    _

    可扩展性:“增加”容量以满足“增加”的工作量。

    弹性:“增加或减少”满足“增加或减少”工作负载的能力。


    可扩展性:在可扩展的环境中,可用资源可能会超过满足“未来需求”。

    弹性:在弹性环境中,可用资源尽可能与“当前需求”匹配。


    可扩展性:可扩展性仅通过以“增量”方式“供应”资源来适应“工作量增加”。

    弹性:弹性通过以“自主”方式“供应和取消供应”资源来适应“工作量增加”和“工作量减少”。


    可扩展性:增加单个计算机资源的能力或增加一组计算机资源的能力可以满足工作负载的增加。

    弹性:随着计算机资源使用的动态变化而变化的工作负载。


    可扩展性:可扩展性使公司能够满足对具有“长期战略需求”的服务的预期需求。

    弹性:弹性使企业能够满足对“短期、战术性需求”的服务需求的意外变化。


    可扩展性:它正在“增加”服务于工作负载不断增加的环境的能力。

    这种可扩展性可以是“向上扩展”或“向外扩展”。

    (例如:

    向上扩展 - 增加单个服务器的能力

    向外扩展 - 通过向单个服务器添加多个服务器来增加能力。)

    弹性:是随意“放大或缩小”服务能力的能力。


    可扩展性:用一个比喻来说,“扩大规模”是个人增加她的能力以满足不断增长的需求,而“扩大规模”是建立一个团队来满足不断增长的需求。 p>

    弹性:打个比方,电影演员增加或减少体重以满足电影业的不同需求。

    _

    【讨论】:

    • Scalability根据系统的工作负载需求处理资源的增减。Elasticity是根据当前的工作负载需求动态管理可用资源。
    【解决方案3】:

    通常,当有人说平台或架构可扩展时,他们的意思是硬件成本随需求线性增加。例如,如果一台服务器可以处理 50 个用户,那么 2 个服务器可以处理 100 个用户,而 10 个服务器可以处理 500 个用户。如果您每获得 1,000 个用户,您需要 2 倍的服务器数量,那么可以说您的设计没有可扩展,因为随着用户数量的增加,您很快就会用完钱。

    弹性用于描述您的架构能够适应实时工作负载的程度。例如,如果您每小时有一个用户登录到您的站点,那么您实际上只需要一台服务器来处理这个问题。但是,如果突然间有 50,000 名用户同时登录,您的架构能否快速(并且可能自动)动态配置新的 Web 服务器来处理这种负载?如果是这样,可以说你的设计是有弹性的

    【讨论】:

    • 可扩展性在通过添加额外资源增加工作负载的情况下表现如前,还是在通过添加额外资源增加工作负载的情况下表现比以前更好?
    【解决方案4】:

    可扩展性是指您的资源在大小或数量上增加或减少的能力。

    要实现这样的事情涉及很多基础设施,所以这不是一件容易的事。

    AWS 中的许多服务在默认情况下都是可扩展的,这也是 AWS 如此成功的原因之一。

    可扩展性很容易定义,这就是为什么弹性的某些方面经常归因于它。


    弹性是您的资源根据规定的标准(通常是CloudWatch 规则)进行扩展的能力。

    当 Web 应用程序获得大量流量时负载均衡器添加实例时会发生这种情况。

    可伸缩性是弹性所必需的,反之则不然。

    并非所有 AWS 服务都支持弹性,即使是那些经常需要以某种方式配置的服务。

    --

    在简历中,可扩展性使您能够增加或减少资源,而弹性使这些操作根据配置的规则自动发生。

    【讨论】:

      【解决方案5】:

      一张图片胜过一千个字。我在 Mark Richards 和 Neal Ford 的软件架构基础:一种工程方法中找到了它。

      【讨论】:

        【解决方案6】:

        可扩展性根据系统的工作负载需求处理资源的增加和减少。因此,可扩展性不必自动完成。

        弹性是根据需要自动或动态增加或减少资源的能力。弹性资源与当前需求相匹配,并在需要时自动添加或删除资源以满足未来的需求。

        因此,简而言之,系统自动处理可扩展性的能力就是弹性

        【讨论】:

          【解决方案7】:

          弹性与服务或应用程序的短期需求及其变化有关,但可扩展性支持长期需求。

          【讨论】:

            【解决方案8】:

            弹性是系统根据特定标准(例如总负载)增加(或减少)其计算、存储、网络等容量的能力系统。

            例如,您可以实现一个后端系统,该系统最初在其集群中拥有 1 个服务器,但如果集群中所有服务器的平均每分钟 CPU 利用率超过给定阈值 (例如 70%)。

            同样,如果系统负载降低并且每分钟平均 CPU 利用率低于您定义的阈值(例如 30%),您可以将系统配置为从后端集群中删除服务器。

            作为另一个示例,如果当前可用的总存储空间的 80% 以上被使用,您可以将系统配置为将后端集群的总磁盘空间增加 2 个数量级。如果由于某种原因,稍后从存储中删除了数据,例如,使用的总存储低于 20%,您可以将总可用磁盘空间减少到其原始值。

            但有些系统(例如旧版软件)不是分布式的,可能它们只能使用 1 个 CPU 内核。因此,即使您可以按需增加可用的计算容量,系统也不能以任何形式使用这种额外的容量。此类系统不可扩展。但可扩展系统可以使用增加的计算容量并处理更多负载,而不会影响系统的整体性能。

            不过,可扩展系统并不依赖于弹性。传统上,IT 部门可以用具有更多 CPU、RAM 和存储的新服务器替换现有服务器,并将系统移植到新硬件以利用可用的额外计算容量。

            云环境(AWS、Azure、Google Cloud 等)提供弹性,并且它们的一些核心服务也可以开箱即用地扩展。此外,如果您构建了一个可扩展的软件,您可以将其部署到这些云环境中,并从它们为您提供的弹性基础架构中受益,从而按需自动增加/减少您可用的计算资源。

            【讨论】:

              【解决方案9】:

              根据我对这些概念的有限理解,举个例子:

              假设我们有一个由 5 台计算机组成的系统,它执行 5 个工作单元,如果我们需要多完成一个工作单元,我们将不得不使用另外一台计算机。这是一个可扩展的系统,但它不是弹性的。有人将不得不去拿另一台电脑。此外,如果购买了一台新计算机并且不再需要额外的工作单元,则系统会因冗余资源而陷入困境。

              现在,假设同一系统使用适合其需求的云服务,而不是自己的计算机。理想情况下,当工作负载上升一个工作单元时,云将为系统提供另一个“计算单元”,当工作负载下降时,云将优雅地停止提供该计算单元。这是一种系统既可扩展又具有弹性的情况。

              【讨论】:

                【解决方案10】:

                可扩展性和弹性都是指满足流量需求,但在两种不同的情况下。

                可扩展性满足可预测的流量需求,而弹性满足突发流量需求。

                图片参考:https://www.skylinesacademy.com/blog/2020/3/6/az-900-cloud-concepts-scalability-and-elasticity

                【讨论】:

                  【解决方案11】:

                  可扩展性和弹性都是指系统在容量和资源方面增长和收缩的能力,在这种情况下实际上是一回事。差异通常在于发生这种情况的需求和条件。可扩展性主要是手动的、预测的和针对预期条件的计划。弹性是自动的,对外部刺激和条件具有反应性。弹性是响应外部条件和情况的自动可扩展性。

                  【讨论】:

                    猜你喜欢
                    • 2017-10-30
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-02-25
                    • 1970-01-01
                    相关资源
                    最近更新 更多