云计算中的弹性和可扩展性有什么区别
我从 T.Erl 的书中读到(如果我理解正确的话),可扩展性是资源根据需求增加或减少的能力,而弹性是根据资源的需求自动扩展资源。在网络上进行一些搜索后(如果我理解正确的话),可扩展性是关于按需求添加或删除 IT 资源,弹性大致相同,但对于虚拟机器。我应该考虑正确吗?
云计算中的弹性和可扩展性有什么区别
我从 T.Erl 的书中读到(如果我理解正确的话),可扩展性是资源根据需求增加或减少的能力,而弹性是根据资源的需求自动扩展资源。在网络上进行一些搜索后(如果我理解正确的话),可扩展性是关于按需求添加或删除 IT 资源,弹性大致相同,但对于虚拟机器。我应该考虑正确吗?
可扩展性是系统能够通过增加系统资源(向上扩展)或增加支持流程的系统数量(向外扩展)来支持增加的处理/流量的能力。为了可扩展,资源和支持的处理之间的关系需要是线性的。如果一个系统需要四倍的资源来支持增加 50% 的用户数量,那么它的可扩展性就会很差。一些系统由于糟糕或有限的架构而无法扩展。无论添加多少资源,您都不会得到改进(甚至可能会减少支持)。
弹性是作为对系统处理需求的响应而按比例放大/缩小和缩小/缩小的能力。例如:
由于弹性,公司不再需要始终保持对高峰使用的支持。公司可以通过在高峰使用时增加资源来改善用户体验,并通过在不再需要资源时减少资源来降低成本。
有些云产品包括弹性,消费者无需付出任何努力。您只会看到基于使用的成本变化。其他产品需要您的输入。在这些情况下,弹性确实包括一些自动化来完成添加/删除资源的任务。在许多情况下,手动执行这些步骤是令人望而却步的。然而,增加/减少资源的决定不一定需要自动化。这可能是一个复杂的决策,需要考虑自动化决策的投资回报率。
弹性假设可伸缩性,但这不是硬性要求。如果系统的可扩展性较差,您仍然可以扩展以支持流量。但是,投资回报率会很糟糕。
请参阅下面来自 AWS 和 Azure 的弹性定义。
添加到前面的答案,想象两个维度:x 轴上的资源,y 轴上的服务需求(吞吐量、吞吐量或其他质量标准)。系统的可扩展性就是找到这两个维度之间的关系(理论上),而弹性就是使系统在线更改其资源以满足实际需求。
当您说系统是可扩展的时,您是在谈论系统处理更多/做更多的能力,当您向其添加更多资源时。当您说系统是弹性的时,通常还涉及一个管理层,可根据需要提供和释放资源;)