竞价实例与AWS SPOT逆向解析

李力

李力

腾讯云的老程序员,招聘各类技术职位

作者是我的同事alexmwang,已经获得授权

竞价实例是什么 —— what

用户视角的竞价实例

  • AWS竞价实例,即AWS EC2 SPOT instance
  • 用户在竞价型实例请求中指定愿意支付的最高出价。
  • 如果竞价型实例价格不高于用户的出价,则用户实例可以运行,且按照竞价型实例的实际价格付费;如果竞价型实例价格高于用户出价,则实例中断运行,会被销毁。
  • 竞价实例加个由Amazon EC2设定,并且根据竞价型实例容量的供求关系发生周期性波动。

直观认识:AWS SPOT 价格示例

image

  • 多数时候为折扣形式(低于按量计费)

  • 可能高于按量计费,通常为倍数关系

    • 验证应当是售罄的一种表现形式

AWS SPOT 控制台

image

  • 请求类型

    • 请求,提交一次性竞价实例请求。实例被抢占后不会自动补充。
    • 请求并维护,自动补充由竞价中断的竞价实例。可以修改请求的容量,即实例个数。
    • 预留持续时间,请求在1到6小时内不中断的竞价实例,在持续时间内不被抢占。
  • 目标容量

    • 即实例个数
  • AMI镜像

    • 可选公有镜像和私有镜像。
  • 实例类型

    • 具体小机型,可单选or多选
    • 2个工具,辅助用户选择,包括定价历史记录、竞价出价顾问
  • 分配策略

    • 关于可用区&实例类型
    • 选择最便宜的可用区&实例类型
    • 在选定可用区和实例类型之间平衡竞价实例
  • 可用区

    • 无首选项,或者选择若干个zone
  • 最高价

    • 使用自动出价(推荐),按照市场现货价格预配置竞价实例,以按需价格为上限
    • 用户人为设定最高价

定价历史记录

image

  • 按照下列维度检索
  • 实例类型,即具体小机型
  • 日期范围
  • 产品,具体来看是不同的OS平台
  • 结果
  • 该region内部多个zone的价格曲线
  • 可能超过按量计费的原价,推测为售罄表现形式
  • 疑问
  • 价格与实例的OS平台有关,难道是预生产了?
  • 预生产对镜像和规格都有限制,如果不match,将造成浪费。加之竞价实例理论上生产销毁更为频繁,采用预生产机制预计会增加复杂性

竞价出价顾问

<figure style="margin: 1em 0px;">

image

  • 按照下列维度检索
  • 区域,即region
  • 操作系统
  • 出价:相对于按需计费的比例,25%、50%、100%
  • 实例类型刷选条件:vCPU和内存下限
  • 结果包括下列维度
  • 具体机型和配置
  • 相比按需,可节省成本比例
  • 出价过高的频次
  • 上述数据依据过去30天的历史数据
  • 小结
  • 对于同一机型,出价越高,节省成本比例越小,但是出价过高的频次越小
  • AWS 希望通过Advisor机制,建议用户购买“低频”机型,避免竞价超出用户出价,导致实例销毁。同时,引导到达市场适度平衡。

竞价实例的价值 —— why

用户侧

  • 有效降低用户成本

    • 考虑到云服务厂商自身成本,通常只能给用户一个适中的折扣。如果使用竞价实例,可以将闲时计费降到很低,有效降低用户成本。
  • 不仅batch场景,广义的离线计算都可以使用竞价实例,用户可以接受实例被销毁

<figure style="margin: 1em 0px;">

image

平台侧

  • 错峰填谷,提升综合售卖率。
  • 我们时常售罄,但是每周仍然有相当时间资源空闲,这其实也是浪费
  • 单一在线业务与终端用户行为有关,通常难以改变“高峰-低谷趋势”;但是公有云上运行混合负载,涵盖在线业务和离线业务,可以引导离线业务客户购买竞价实例,实现错峰填谷
  • AWS 竞价实例规模巨大,曾披露:2016年一周的EC2 SPOT的计算能力大于2012一年EC2的计算实例

如何实现竞价实例 —— how

竞价实例整体设计

  • 竞价市场

    • 以可用区zone + 具体机型为基本单位,不考虑OS平台
    • 竞价市场,根据供需关系确定实时价格,后文专题展开
    • 竞价市场的输出是price table,即指定zone + 指定机型,输出定价历史曲线。这样拉看,前文中的“定价历史记录”不仅是运营工具,更是核心数据
  • 计费方式

    • Cvm bill组件查询price table获得具体分时价格,结合实例存在时间,向计费侧进行计费
    • 整体流程与按量计费类似,不同点在于引入竞价市场的price table,计费粒度更小
  • 请求与实例

    • 维护请求与实例2层关系
  • 抢占

    • 抢占前2分钟,通知实例。子机内程序可识别信号,进行自我清理,实现“优雅退出”
    • 子机计费,不得超过用户最高出价,特别注意抢占阶段。
  • 售罄与配额

    • 与当前售罄机制、配额向配合,包括总体按量售罄、具体机型售罄、用户配额。
    • 当具体机型售罄时,竞价实例也应当售罄;每个用户在指定region的竞价实例也应当具有配额。
  • API

    • 需要支持API方式

竞价市场和定价规则

关于AWS竞价市场和定价规则,AWS从未公开,最初有2种思路,auction model或者后台设定价格。

  • 思路一
  • auction model
  • 类似互联网广告,m个广告主,n个广告位,最终价格与市场供需(包括广告主的出价)有关。常见模型包括GSP(广义第二价格)等。
  • 思路二
  • 与市场用户的竞价行为无关,后台设定价格
  • 调研结论
  • 很可能是思路二
  • 代表论文:《Deconstructing Amazon EC2 Spot Instance Pricing》,以色列理工,以2010年数据为例,234次引用
  • 核心观点:AWS SPOT的价格不是由市场驱动。相反,价格通常是根据后台预留好的价格生成的。
  • 备注:论文年限相对较久,但是在本问题上影响力很大,引用广泛,因此主要参考本论文。

论文核心

  • 背景

    • AWS为了售卖空闲资源,推出竞价实例
    • AWS并未披露其市场定价的机制与规则,只是公开了定价历史记录(不公开定价记录,则整套机制无法运转)
    • 作者尝试去逆向AWS市场定价机制
  • 基本方法

    • 定义出价D的可用性,即在一个时间段内D大于等于实际价格的时间片分数
    • 公式较为抽象,论文中仅配备了公式,并无配图。读者这里脑中可以结合定价历史记录想想一个走势图,易于理解此公式。

    <figure style="margin: 1em 0px;">

    image

  • 统计数据

    • 横坐标为最高出价,纵坐标为前文定义的可用性
    • windows,不同region、不同机型的变化曲线,出价为绝对值

    <figure style="margin: 1em 0px;">

    image

    • linux,不同region、不同机型的变化曲线,出价为归一化结果(折扣,出价除以按需原价的比例)

    <figure style="margin: 1em 0px;">

    image

    • windows,不同region、不同机型的变化曲线,出价为归一化结果(折扣,出价除以按需原价的比例)

    <figure style="margin: 1em 0px;">

    image

  • 先破后立
    形成上述趋势,有两种可能

    1. AWS采用市场竞价模型,自然形成的这种趋势。
    2. AWS后台设定“保留价格“,然后动态随机波动。
      论文先假设第一种可能,并推翻;然后证明第二种可能成立。两部分有所呼应,但整体行文是先破后立。
  • 假设与推翻

    • 假设AWS定价是根据市场供需、用户出价自然形成的

    • 反推几乎不可能:

      • 论文提出,如果是市场驱动形成的,不可能同时满足多个趋势,例如:不同机型、不同地域,出价与可用性存在刚线性关系。按照绝对值计算,不同机型趋势相同,但取值不同;按照归一化结果计算,不同机型趋势和取值都近似等,这里不做展开。
      • 并用数学AR(auto-regresive)推导,大概率不是根据市场生成的,与用户出价无关。
  • 猜想与证明

    • 作者猜想的方法:动态随机保留价格算法,后台预先设定好若干个价格值,动态随机波动
    • 算法需要一对入参,保留价格的下限F和上线C,然后通过AR推导出多个保留价格

    <figure style="margin: 1em 0px;">

    image

    • 用数学AR推导,这种猜想的方法大概率是成立的
    • 私货:对于价格与需求侧(用户出价)无关,论文说服力强;但是对于价格与供给侧(库存量)无关,论文说服力弱,因为研究者无从知道AWS的库存情况。有可能AWS实时查询库存值,然后根据预先设定好的若干个价格值中,进行关联波动。
  • 后台设定价格的好处

    • 保证成本,避免用户竞价对最终价格产生直接影响,保证售价符合成本预期
  • 当前数据
    私货:论文利用的是2010年的数据,有没有可能AWS现在已经扬弃了当年的做法呢?我们来看下2017年5月最新的数据。
    刻意选取了一种变化相对不规律的机型和一种变化非常规律的机型。可以发现即使是前者图中,也有很多设定的值,即最终定价是在若干个(几种或者几十种)价格中波动的;而对于后者图中,价格只有一折、十倍两种取值。
    因此,大概率AWS目前仍然在沿用类似的机制。

    <figure style="margin: 1em 0px;">

    image

<figure style="margin: 1.6em 0px 1em;">![image](http://upload-images.jianshu.io/upload_images/12031442-6825d7aba6836205.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

竞价市场原型

  • 算法思路:阶梯折扣

    • 设定库存阈值与预留价格的对应关系
    • 定时查询库存,根据阈值设定实时价格
  • 举例

    • 后台预先设定好若干个价格值,并与库存阈值关联
    • 其中价格5元类似论文中的上限C,3元类似论文中的下限F
    • 其中库存值和价格的关系,是根据经验人为设定,并非市场竞价模型得出

<figure style="margin: 1em 0px;">

image

需配合方支持

  • 计费

    • 支持分时计费,子机不同时段费用不同,时间粒度细
    • 支持更多价格,同一机型、同一配置,具有不同价格,可以供调用方(CVM)灵活调用
  • 资源管理

    • 适当扩大资源buff,尽量避免售罄
    • 可跟随竞价实例的运营推广程度同步进行
  • 库存统计

    • VStation已经支持模拟装箱算法进行准确库存统计
    • 其他维度的库存待对齐支持,例如cbs、ip等
  • 运营监控

    • 竞价实例产品对运营监控能力要求较高,包括要展示各个机型的定价历史记录,使用者包括腾讯云用户和产品运营人员。
    • 对资源库存统计、子机创建销毁进行监控,形成运营报表,同时覆盖竞价实例单独的运营报表
    • 目前已有相关报表,进一步完善
  • 客户筛选

    • 理论上,子机随时可能被销毁,用户可接受
    • 用户自行解决“断点重算”等问题,对用户有一定要求
    • 剖析用户需求为增量需求,还是存量需求转换(按需计费改买竞价实例)。理论上,售价越便宜,客户购买量越大,但是实际情况还要观察。

参考

Amazon EC2竞价型实例_Amazon EC2优势_AWS实例-AWS云服务
AWS EC2常见问题_EC2虚拟云服务器托管常见问题-AWS 云服务
你知道AWS的EC2竞价实例规模有多大了吗?
Auction - Wikipedia
http://theory.stanford.edu/~tim/f13/l/l2.pdf
http://www.mulix.org/pubs/cloud/spotprice-cloudcom.pdf

编辑于 2017-06-29

原文:https://zhuanlan.zhihu.com/p/27606489

[转]竞价实例与AWS SPOT逆向解析相关推荐

  1. 云资源中的低成本战斗机——竞价实例,AWS、阿里云等六家云厂商完全用户使用指南

    https://zhuanlan.zhihu.com/p/128692430 云资源中的低成本战斗机--竞价实例,AWS.阿里云等六家云厂商完全用户使用指南 原创 灵魂工作室 速石科技 2019-10 ...

  2. 【云端软件】竞价实例(Spot instance):可节省80%-90%的云计算成本

    竞价实例(Spot instance):可节省80%-90%的云计算成本 竞价实例是云中的闲置计算能力,它是云供应商出售其计算能力的一种方式之一-另外两种是按需实例和预留实例(包年包月实例).就服务器 ...

  3. 腾讯云推出竞价实例 云服务器开销最高下降90%

    伴随着数字化技术的广泛应用,企业业务上云成为大势所趋,企业在服务器等方面的IT成本得以大幅下降.但是追求性价比之路永无止境,企业的长久发展依赖成本的长期优化,对于企业CTO来说,既要潜心提升企业的内功 ...

  4. 腾讯云服务器竞价实例是什么意思?

    什么是竞价实例 竞价实例(Spot)是云服务器 CVM 的一种新实例运作模式,它最核心的特点是折扣售卖和系统中断机制,即您可以以一定幅度的折扣购买实例,但同时系统可能会自动回收这些折扣售卖的实例.当您 ...

  5. 快速玩转ECS竞价实例

    快速玩转阿里云竞价实例 什么是竞价实例 竞价实例是一种按照供需关系变化价格波动的一种后付费类型实例,相对于按量付费实例价格有较低的折扣. 竞价型实例使您可以对 ECS 实例出价,这可以大幅降低您的 E ...

  6. JS逆向-Protobuf逆向解析

    目录 一.python快的解析Protobuf方式 二.什么是Protobuf 三.Protobuf环境配置 四.Protobuf实例序列化与反序列化 五.逆向解析 Protobuf案例 1.pyth ...

  7. 【Android 逆向】Android 逆向方法 ( 静态逆向解析 | 函数调用分析 | 动态运行跟踪 | 运行日志分析 | 文件格式解析 | 敏感信息分析 | 网络信息监控 | 环境伪装模拟 )

    文章目录 一.Android 逆向方法 1.静态逆向解析 2.函数调用分析 3.动态运行跟踪 4.运行日志分析 5.文件格式解析 6.敏感信息分析 7.网络信息监控 8.软件动态调试 9.环境伪装模拟 ...

  8. BCC实例(如何修改NS解析方式为百度智能云解析) - 解答篇

    文章目录 一.步骤: 二.部分步骤 · 截图示下: 三.添加解析方式: 四.附:解析记录类型含义 一.步骤: 进入百度智能云 后台控制台 "域名服务BCD" ; 进入 " ...

  9. 网易云音乐PC客户端加密API逆向解析

    1.前言 网上已经有大量的web端接口解析的方法了,但是对客户端的接口解析基本上找不到什么资料,本文主要分析网易云音乐PC客户端的API接口交互方式. 通过内部的代理设置,使用fiddler作为代理工 ...

最新文章

  1. 面试:HashMap 夺命二十一问!鸡哥都扛不住~
  2. solaris磁带设备使用方法总结
  3. Android 图像合成技术Xformodes图片剪裁
  4. python处理excel表格教程-python操作excel(内附python教程分享)
  5. 不可错过!华为终端云服务带来Mate 20系列专属礼包
  6. 我为什么对TypeScript由黑转粉?
  7. 简单思维dp-- Gym - 102392B
  8. 使用CLI设置WildFly绑定地址并关闭
  9. 第一个程序 快速编译链接的办法
  10. 二叉树——判断一棵树是否是平衡二叉树
  11. mysql导入报编码错误问题解决
  12. 用opencsv文件读写CSV文件
  13. Android 开发工具集合 - (Android Dev Tools)
  14. Ubuntu 10.04.2上编译ecos工具
  15. 基于MyEclipse+Mysql+Tomcat+SSH开发的运动会管理系统
  16. 程序猿必备的17款最佳的代码审查工具
  17. Hexo博客NexT主题开启文章目录和调整样式
  18. 360云盘 上传服务器忙,360云盘由于服务器压力延期一年关闭 可以慢慢转移资源了...
  19. 但行好事莫问前程 学习笔记
  20. HTML5 混合APP开发学习笔记(三)——CSS样式设计

热门文章

  1. (建议收藏)服务器宕机,效率排查攻略V2.0
  2. linux+命令行粘贴不执行,在linux命令行粘贴命令后果
  3. win10桌面计算机怎么显示器,win10电脑三分屏怎么设置_win10电脑怎么分屏3个显示器...
  4. 万字详解数仓分层设计架构 ODS-DWD-DWS-ADS
  5. 公众号开发精品教程(2)——将项目接入微信及简单交互
  6. html载入3d模型,webGL3D模型的加载与使用
  7. C++实现动态烟花,噼里啪啦过新年啦
  8. 虚拟机下的ROS无法打开笔记本摄像头
  9. 转换视角看问题---“两个世界”
  10. SAP OOALV 动态设置单元格可否编辑