如果您正在考虑将部分或全部IT基础设施迁移到云,那么可能有助于说服人们加入云计算的一个优势是能够使用弹性伸缩。通过弹性伸缩,你可以在任何给定的时间内,利用它所使用的资源的数量来响应实际的负载。,从而为您的网站或Web应用程序带来真正的提升。
弹性伸缩是许多云计算服务中的一个强大功能,它允许根据在特定时间发生的负载来增加或减少资源。基本上,你可以设置额外的服务器等资源,就像负载均衡一样,但是在任何给定时间内,使用的资源数量都是根据当时接收到的请求的数量来确定的。
弹性伸缩一词源于亚马逊网络服务(AWS)。但是,现在许多其他云服务厂商也提供此功能,因此您有多种选择可供选择,以最大限度地满足贵公司的需求。
弹性伸缩对处理流量峰值和低谷都是有利的。通过自动调节,额外的资源只在需要的时候才会被使用,例如,您不必为了处理在某个时间点的高负载而使用额外的服务器。相反,你只需在需要的时候付钱,这可能会给你省下不少钱!
许多服务都设置了弹性伸缩,以便您可以拥有允许运行的最小和最大数量的服务器来处理请求。例如,您可以设置为最少一个,最多八个。如果请求数量最少,那么就只有一台服务器正在运行。如果负载变得非常高,那么所有八台服务器都可以运行。一旦流量再次下降,一些服务器就可以关闭。
周期计划是一个相关的技术,它使用静态调度来打开或关闭预期流量所需的资源。但是,这种技术的缺点是,它可能并不总是能解决所有的事情。
例如,一个意想不到的流量峰值可能会在半夜到达,因为那天晚上有更多的人在网上冲浪。这种意外的流量可能会导致停机,因为根据计划,当时只有最少数量的服务器在运行,并且无法处理负载。通过弹性伸缩,意外的流量峰值将会被自动处理,从而有助于避免停机。
在2013年,Netflix发布了一份报告,展示了他们如何使用两种形式的弹性伸缩:一种是由AWS提供的,另一种是为AWS的一些特定用例定制的。 Netflix的主要目标是始终拥有一个可扩展的系统,使中断率最小,并在发生任何中断时能够快速响应。
他们用来满足需求的第一项技术是AWS提供的Amazon Auto Scaling(AAS 亚马逊弹性伸缩)。对于AAS,Netflix对弹性伸缩功能的有效性给予了很高的评价。
Netflix还进一步增加了一个定制的弹性伸缩引擎来处理一些特定的情况,例如快速增长的需求,宕机(他们指出通常很快就会发生“重试风暴”)以及变化的流量模式。他们指出,积极扩大规模和总是拥有超过实际需求的服务器都不是成本最佳的解决方案。
因此,他们建立了被称为Scryer的可预测的弹性伸缩引擎,该引擎能够根据日常的流量来预测资源需求。通过添加Scryer到混合引擎,他们注意到他们获得了一些额外的好处,包括更好的服务可用性和降低EC2(Elastic Compute Cloud 弹性计算云)成本。
最后,Netflix能够通过Scryer和AAS来创建混合的可预测的弹性伸缩,并认为这种组合确实有助于为他们提供强大的解决方案。
2014年8月,Facebook发布了一篇他们的工程师的帖子,描述了他们如何使用弹性伸缩来显着降低能源成本。
弹性伸缩让服务器在半夜节省了27%的电量(正如预期的那样,在高峰时段节电为0%)。对于不同的web集群,以24小时为周期的平均节电约为10-15%。
Facebook的目标是保持节能,并在继续扩大规模的同时保持最小的环境影响。由于他们的服务器处理了数十亿的请求,所以他们已经使用了一个改进的循环系统来实现负载平衡。虽然这很有帮助,但他们觉得通过在混合中加入一些弹性伸缩功能可以节省更多的能源。
为了实现他们的目标,他们实现了一个弹性伸缩的解决方案,能够将工作负载推送到服务器上,直到它正在承担一个中等的工作负载,并且当工作负载较低时(在他们的情况下,就是接近半夜时),只会使用少量的服务器。与典型的集群相比,这将会节省大量的能源。
正如您所看到的,它们的弹性伸缩集群的能耗比它们的基本集群要少得多,尤其是在非高峰时间。因此,弹性伸缩帮助他们既省钱又减少了在拓展时对环境的影响。