云计算的弹性和可扩展性之间有什么区别
我从T.Erl的书中读到(如果我理解正确的话),可伸缩性是资源根据需求增加或减少的能力,而弹性是根据资源的需求自动扩展资源。
在网络上进行了一些搜索后(如果我理解正确的话),可伸缩性是根据需求添加或删除it资源,弹性大致相同,但对于虚拟机而言。我应该认为哪一个是正确的?
可扩展性是指系统能够通过增加系统资源(扩展)或增加支持进程的系统数量(扩展)来支持增加的处理/流量的能力。为了实现可扩展性,资源和支持的处理之间的关系需要是线性的。如果一个系统需要四倍的资源来支持用户数量增加50%,那么它的可扩展性就很差。有些系统由于体系结构不好或有限而无法扩展。无论增加多少资源,您都不会得到改善(甚至可能会减少支持)。
弹性是根据系统的处理需求向上/向下和向外/向内扩展的能力。例如:
- 航运公司可能需要在假期增加资源,然后在假期后减少资源
- 股票交易网站在交易时间可能非常活跃,但在交易时间之外流量很少
由于弹性,公司不再需要一直支持峰值使用。公司可以通过在高峰使用时增加资源来改善用户体验,并通过在不再需要资源时减少资源来降低成本。
有一些云产品包括弹性,而消费者无需付出任何努力。您只会看到基于使用的成本变化。其他产品需要您的投入。在这些情况下,弹性确实包括一些自动化来完成添加/删除资源的任务。在许多情况下,手动执行这样的步骤将是禁止的。然而,增加/减少资源的决定不一定需要自动化。这可能是一个复杂的决策,需要考虑自动化决策的ROI。
弹性假定了可伸缩性,但这并不是硬性要求。如果系统的可扩展性较差,则仍然可以扩展以支持流量。然而,投资回报率将非常糟糕。
请参阅下面AWS和Azure对弹性的定义。
- https://wa.aws.amazon.com/wat.concept.elasticity.en.html
- https://azure.microsoft.com/en-us/overview/what-is-elastic-computing/
要添加到前面的答案中,想象两个维度:x轴上的资源,y轴上的服务需求(吞吐量、吞吐量或其他质量标准)。系统的可伸缩性就是要找到这两个维度之间的关系(理论上),而弹性就是要让系统在线改变资源以满足实际需求。
当你说一个系统是可扩展的时,你说的是当你向它添加更多资源时,系统处理更多/做更多的能力。当你说系统是弹性的时,通常还涉及一个管理层,根据需要提供和释放资源;)