云计算平台中允许客户依据应用的负载进行云计算资源的弹性动态伸缩(理想的情况是实现一个用多少付费多少的模型,最大限度地降低用户的运营成本)
在进行讨论之前,先对几个名词进行定义
1)客户:使用云服务的人,在云上部署他的应用
2)用户: 使用部署在云上的应用的人
Auto-scaling的基础
云计算的一个关键特点是弹性伸缩,但它是一把双刃剑,因为它允许应用依据负载动态地申请和释放资源,但是确定一个合适的资源量并不容器,那么需要一个系统自动地依据负载来调整资源量(尽可能得减少人工的干预)。
资源的伸缩主要有两种:
1)垂直伸缩:简单的说就是伸缩的时候以虚拟机为单位,直接增加或减少虚拟机的数量
2)水平伸缩:对虚拟机的内部的资源(如CPU、存储等)进行伸缩
但大多数操作系统在水平扩容时都需要重新启动虚拟机,因此很多云服务商都只提供垂直伸缩。
那怎么样来判断一个一个auto-scaling系统是否合格呢:
1)在客户(应用的部署者)和终端用户之间的Service Level Agreement (SLA),比如说满足一定的响应时间
2)在云服务提供商和客户之间的SLA,比如说满足云平台的一定的资源利用率
Auto-scaling的实现主要面临几个问题:
1)Under-provisioning:即应用没有获得足够的资源来应对用户的请求,不能满足SLA,需要增加更多的资源
2)Over-provisioning:即应用在满足SLA后还有过多的资源,客户付出了不必要的成本
3)Oscillation:当伸缩的动作执行的过快时,可