云上高弹性、低成本解决方案( 四 )


因为 Spot 场景价格非常低 , 所以F方式的成本很低 , 而系统带来的一些释放行为 , 也是导致F方式的稳定性最差的原因 。 因此希望在F方式的基础上作出成本更低稳定性更高的使用方式 , 所以推出了成本优化模式新功能 。
F 方式(全 Spot)在原先全部适用于一种实例规格的基础上 , 在此实例规格上做出一些调整 , 允许实例打散 , 将多种实例规格组合来满足资源的交付 。 下图中从左边一种实例规格到右边多种实例规格混合交付的方式 , 如果一次性交付是三种或四种 , 这样即便有一种实例规格出现问题也不会影响整体使用关联性 。
云上高弹性、低成本解决方案文章插图
另外 , Spot 在此基础上又提供了提前补偿机制 , Spot 实例在释放前五分钟可通过事件示例订阅此消息 , 在 Spot 实例释放前五分钟时自动开启补偿机制 , 知道某些实例被释放后就开始创建替换实例 , 创建完后立刻将 Spot 释放的实例替换掉 , 这样就不会出现图中左边断崖式释放 。 否则 , 在 Spot 实例释放完后再重新创建替换实例中间的时间周期会导致一定的抖动 , 而右边提前五分钟在 Spot 实例还没有释放完时新的实例已经创建出来 , 所以业务上不会出现抖动情况 。 需要注意的一点是使用 Spot 实例时一定要保证业务是无状态的 。

  • 事件驱动
弹性伸缩提供的事件驱动能力 , 阿里在提供开放接口(OpenApi)的基础上又提供事件通知(Notification)和生命周期挂钩(Hook)的能力 。 通过这三种方式的结合可以让用户拥有更全面控制弹性伸缩组的能力 。
云上高弹性、低成本解决方案文章插图
关于事件通知和生命周期挂钩的职能 , 从图中可以看到扩容时需要创建资源、关联 RDS 白名单、启动中、运行中、挂载 SLB 并且最终加入到 ESC 弹性伸缩组中 , 而缩容时是从 ESC 弹性伸缩组挪出、取消 SLB 挂载、关机、取消 RDS 白名单、移除最终释放 。
无论是扩容还是缩容最后执行结果时都会有事件通知 , 该事件通知可以通过事件订阅 , 例如 MNS 消息队列、CMS 云监控、OOC 运维编排方式订阅信息 , 然后将信息进行相关处理 , 可集成到自身系统中待资源成功时添加到系统当中 , 如果失败可进行自动化重试 。
而生命周期挂钩在每一次扩容或缩容时会先发出消息 , 在用户接受到消息时可以判断当前这次扩容或缩容能否进行 , 例如创建实例后在挂载 SLB 之前会给用户发送消息 , 订阅消息后就可知道当前多少实例创建成功 , 并通过自身业务场景进行判断这些实例是否需要继续往下走 , 是否需要挂载 SLB , 是否需要最终交付到弹性伸缩组中 。 如果不需要 , 可直接选择 Rollback , 这些资源将会自动清理掉 , 如果需要就继续往下走最后添加到弹性伸缩组中 。
缩容也是同样 , 当某些资源需要被释放时会将消息发送给用户 , 提示当前要释放哪些资源 , 用户在获取到消息后可以进行验证 , 看资源上的任务是否进行完毕 , 是否有数据需要进行同步和备份 。
如果任务还未进行完毕时 , 用户可以选择等待或者直接取消 , 如果所有任务进行完毕且符合预期则可以继续往下走并进行释放 。
通过生命周期挂钩能力和事件通知能力可以让用户了解到一个事件中所有行为的全面感知 , 这样无论是自己做业务报警还是系统集成 , 都拥有更全面的控制能力 。
弹性供应
  • 弹性供应(Auto provisioning)介绍
弹性供应是一种全新算力交付方式 , 可以整合包年包月、按量和 Spot 多种能力的付费类型实例 , 并且跨实例规格族、跨可用区的计算集群交付 。
其优势在于相比以前交付 1000 资源 , 现在在弹性供应上交付 1000vCPU、交付 1000 Memory 或者用户自身定义纬度应该交付的资源权重的样式 , 按照权重定义资源数量 。
云上高弹性、低成本解决方案文章插图
图中显示可定义当前伸缩组所有资源的比例 , 如 33% 按量资源和 67% Spot 资源 , 这样用户可在整体成本上自行控制 , 在自身想要的成本情况下来满足自身业务需要 。 最终交付的成果如图 A、B、C、D , 是多种实例规格多种可用区资源的整体结构 。
  • 弹性供应的基本组件

云上高弹性、低成本解决方案文章插图
目标容量:定义目标容量 , 可以定义 vCPU 的维度、实例维度或者其他需要的维度 。