我听过很多人互换使用这两个词。但是,在我看来,它们之间存在差异:
可扩展性 - 系统增加当前硬件资源工作量的能力(向上扩展);
弹性 - 系统增加其当前和附加(动态添加的按需)硬件资源(向外扩展)的工作负载的能力;
弹性与部署在云应用程序密切相关。
我是否区分了这两种非功能性软件特性呢? 可能有人提供具体的例子,所以我们可以在这两个术语之间划出更明显的界限吗?
答案 0 :(得分:45)
可伸缩性是系统通过添加资源来使容量更大的能力,使硬件更强大(扩展)或添加额外节点(向外扩展)。
弹性是指通过与横向扩展相关的动态来适应动态处理负载所需的资源的能力。因此,当负载增加时,您可以通过添加更多资源来扩展,当需求减少时,您将收缩并删除不需要的资源。 弹性在云环境中最为重要,在这种环境中,您需要按使用付费,并且不希望一方面为当前不需要的资源付费,另一方面希望在需要时满足不断增长的需求。
答案 1 :(得分:32)
_
可扩展性:“增加”满足“增加”工作量的容量。
弹性:“增加或减少”满足“增加或减少”工作量的能力。
可扩展性:在扩展环境中,可用资源可能会超出以满足“未来需求”。
弹性:在弹性环境中,可用资源尽可能与“当前需求”相匹配。
可伸缩性:可伸缩性仅通过“增量”方式“配置”资源来适应“工作负载增加”。
弹性:弹性通过“自主”方式“配置和取消配置”资源来适应“工作量增加”以及“工作量减少”。
可伸缩性:通过增加单个计算机资源的功能或通过一组计算机资源增加功率来提供增加的工作负载。
弹性:随着计算机资源使用的动态变化,提供了不同的工作负载。
可扩展性:可扩展性使企业能够满足“长期战略需求”的服务预期需求。
弹性:弹性使企业能够通过“短期战术需求”满足服务需求的意外变化。
可伸缩性:“增加”服务于工作负载不断增加的环境的容量。
这种可扩展性可以是“Scaling Up”或“Scaling Out”。
(例如:
向上扩展 - 提高单个服务器的能力
向外扩展 - 通过向单个服务器添加多个服务器来提高能力。)
弹性:能够“扩大或缩小”随意服务的能力。
可扩展性:要使用明喻,“扩大规模”是个人增加力量以满足不断增长的需求,“扩展”正在建立一个团队以满足不断增长的需求。
弹性:使用明喻,电影演员增加或减少她的体重,以满足电影业的不同需求。
_
答案 2 :(得分:19)
通常,当有人说平台或架构扩展时,它们意味着硬件成本随需求呈线性增长。例如,如果一个服务器可以处理50个用户,则2个服务器可以处理100个用户,10个服务器可以处理500个用户。如果您获得的每1,000个用户,您需要2倍的服务器数量,那么可以说您的设计不规模,因为随着用户数量的增长,您将很快耗尽资金。
弹性用于描述您的架构能够实时适应到工作负载的程度。例如,如果您每小时有一个用户登录到您的站点,那么您实际上只需要一台服务器来处理此问题。但是,如果突然有50,000个用户同时全部登录,您的架构能否快速(并可能自动)配置新的Web服务器来处理此负载?如果是这样,可以说你的设计是弹性的。
答案 3 :(得分:2)
关于AWS:
可扩展性是指您的资源增加或减少大小或数量的能力。
要使这种事情发生,需要涉及很多基础设施,因此这不是一件容易的事。
默认情况下,AWS中的许多服务都是可伸缩的,这是AWS如此成功的原因之一。
可伸缩性的定义非常简单,这就是为什么弹性的某些方面经常归因于它的原因。
弹性是指您的资源可以根据规定的标准(通常是CloudWatch规则)进行扩展的能力。
当Web应用程序获得大量流量时,负载平衡器添加实例时,就会发生这种情况。
可伸缩性是弹性所必需的,反之则不是。
并非所有的AWS服务都支持弹性,甚至那些经常需要以某种方式配置的弹性。
这似乎是多余的,但是AWS中以弹性开头的服务通常支持弹性。
-
在简历中,可伸缩性使您能够增加或减少资源,而弹性使这些操作可以根据配置的规则自动进行。
答案 4 :(得分:1)
答案 5 :(得分:1)
可扩展性根据系统的工作负载需求来处理资源的增加和减少。因此,可伸缩性不必自动完成。
弹性是根据需要自动或动态增加或减少资源的能力。弹性资源可以满足当前需求,并且可以在需要时自动添加或删除资源以满足未来需求。
因此,简而言之,系统自动处理可伸缩性的能力就是弹性
答案 6 :(得分:0)
弹性与服务或应用程序的短期需求及其变化有关,但可扩展性支持长期需求。
答案 7 :(得分:0)
从我对这些概念的有限理解中,举例:
假设我们有一个由5台计算机组成的系统,可以完成5个工作单元,如果我们需要再完成一个工作单元,我们将不得不再使用一台计算机。这是一个可扩展的系统,但它不具有弹性。有人不得不去拿另一台电脑。此外,如果购买了新计算机并且不再需要额外的工作单元,则系统会遇到冗余资源。
现在,让我们说同一系统使用适合其需要的云服务而不是它自己的计算机。理想情况下,当工作负载上升到一个工作单元时,云将为系统提供另一个“计算单元”,当工作负载返回时,云将优雅地停止提供该计算单元。在这种情况下,系统既可扩展又具有弹性。
答案 8 :(得分:0)
弹性 是系统根据指定条件(例如总负载)增加(或减少)其计算,存储,网络等容量的能力系统。
例如,您可以实现最初在其群集中具有1个服务器的后端系统,但如果群集中所有服务器的平均每分钟CPU利用率超过给定阈值,则将其配置为向群集添加额外实例(例如70%)。
同样,如果系统上的负载减少且每分钟平均CPU利用率低于您定义的阈值(例如30%),则可以将系统配置为从后端群集中删除服务器。
作为另一个示例,如果使用当前可用的总存储量的80%以上,则可以将系统配置为将后端群集的总磁盘空间增加2。如果出于某种原因,稍后将从存储中删除数据,例如,总使用的存储空间低于20%,则可以将总可用磁盘空间减少到原始值。
但是一些系统(例如遗留软件)不是分布式的,也许它们只能使用1个CPU核心。因此,即使您可以根据需要增加可用的计算容量,系统也无法以任何形式或形式使用此额外容量。此类系统 无法扩展 。但 可扩展 系统可以使用增加的计算容量并处理更多负载,而不会影响系统的整体性能。
可扩展系统不依赖于弹性。传统上,IT部门可以使用具有更多CPU,RAM和存储的新服务器替换现有服务器,并将系统移植到新硬件以使用可用的额外计算容量。
云环境(AWS,Azure,Google Cloud等)提供了弹性,其部分核心服务也可以开箱即用。此外,如果您构建可扩展的软件,您可以将其部署到这些云环境,并从它们为您提供的弹性基础架构中受益,以便按需自动增加/减少可用的计算资源。
答案 9 :(得分:0)
可扩展性和弹性都是指满足流量需求,但在两种不同的情况下。
可扩展性满足可预测的流量需求,而弹性满足突然的流量需求。
图片参考:https://www.skylinesacademy.com/blog/2020/3/6/az-900-cloud-concepts-scalability-and-elasticity