[转]竞价实例与AWS SPOT逆向解析
竞价实例与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
先破后立
形成上述趋势,有两种可能- AWS采用市场竞价模型,自然形成的这种趋势。
- 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逆向解析相关推荐
- 云资源中的低成本战斗机——竞价实例,AWS、阿里云等六家云厂商完全用户使用指南
https://zhuanlan.zhihu.com/p/128692430 云资源中的低成本战斗机--竞价实例,AWS.阿里云等六家云厂商完全用户使用指南 原创 灵魂工作室 速石科技 2019-10 ...
- 【云端软件】竞价实例(Spot instance):可节省80%-90%的云计算成本
竞价实例(Spot instance):可节省80%-90%的云计算成本 竞价实例是云中的闲置计算能力,它是云供应商出售其计算能力的一种方式之一-另外两种是按需实例和预留实例(包年包月实例).就服务器 ...
- 腾讯云推出竞价实例 云服务器开销最高下降90%
伴随着数字化技术的广泛应用,企业业务上云成为大势所趋,企业在服务器等方面的IT成本得以大幅下降.但是追求性价比之路永无止境,企业的长久发展依赖成本的长期优化,对于企业CTO来说,既要潜心提升企业的内功 ...
- 腾讯云服务器竞价实例是什么意思?
什么是竞价实例 竞价实例(Spot)是云服务器 CVM 的一种新实例运作模式,它最核心的特点是折扣售卖和系统中断机制,即您可以以一定幅度的折扣购买实例,但同时系统可能会自动回收这些折扣售卖的实例.当您 ...
- 快速玩转ECS竞价实例
快速玩转阿里云竞价实例 什么是竞价实例 竞价实例是一种按照供需关系变化价格波动的一种后付费类型实例,相对于按量付费实例价格有较低的折扣. 竞价型实例使您可以对 ECS 实例出价,这可以大幅降低您的 E ...
- JS逆向-Protobuf逆向解析
目录 一.python快的解析Protobuf方式 二.什么是Protobuf 三.Protobuf环境配置 四.Protobuf实例序列化与反序列化 五.逆向解析 Protobuf案例 1.pyth ...
- 【Android 逆向】Android 逆向方法 ( 静态逆向解析 | 函数调用分析 | 动态运行跟踪 | 运行日志分析 | 文件格式解析 | 敏感信息分析 | 网络信息监控 | 环境伪装模拟 )
文章目录 一.Android 逆向方法 1.静态逆向解析 2.函数调用分析 3.动态运行跟踪 4.运行日志分析 5.文件格式解析 6.敏感信息分析 7.网络信息监控 8.软件动态调试 9.环境伪装模拟 ...
- BCC实例(如何修改NS解析方式为百度智能云解析) - 解答篇
文章目录 一.步骤: 二.部分步骤 · 截图示下: 三.添加解析方式: 四.附:解析记录类型含义 一.步骤: 进入百度智能云 后台控制台 "域名服务BCD" ; 进入 " ...
- 网易云音乐PC客户端加密API逆向解析
1.前言 网上已经有大量的web端接口解析的方法了,但是对客户端的接口解析基本上找不到什么资料,本文主要分析网易云音乐PC客户端的API接口交互方式. 通过内部的代理设置,使用fiddler作为代理工 ...
最新文章
- 面试:HashMap 夺命二十一问!鸡哥都扛不住~
- solaris磁带设备使用方法总结
- Android 图像合成技术Xformodes图片剪裁
- python处理excel表格教程-python操作excel(内附python教程分享)
- 不可错过!华为终端云服务带来Mate 20系列专属礼包
- 我为什么对TypeScript由黑转粉?
- 简单思维dp-- Gym - 102392B
- 使用CLI设置WildFly绑定地址并关闭
- 第一个程序 快速编译链接的办法
- 二叉树——判断一棵树是否是平衡二叉树
- mysql导入报编码错误问题解决
- 用opencsv文件读写CSV文件
- Android 开发工具集合 - (Android Dev Tools)
- Ubuntu 10.04.2上编译ecos工具
- 基于MyEclipse+Mysql+Tomcat+SSH开发的运动会管理系统
- 程序猿必备的17款最佳的代码审查工具
- Hexo博客NexT主题开启文章目录和调整样式
- 360云盘 上传服务器忙,360云盘由于服务器压力延期一年关闭 可以慢慢转移资源了...
- 但行好事莫问前程 学习笔记
- HTML5 混合APP开发学习笔记(三)——CSS样式设计
热门文章
- (建议收藏)服务器宕机,效率排查攻略V2.0
- linux+命令行粘贴不执行,在linux命令行粘贴命令后果
- win10桌面计算机怎么显示器,win10电脑三分屏怎么设置_win10电脑怎么分屏3个显示器...
- 万字详解数仓分层设计架构 ODS-DWD-DWS-ADS
- 公众号开发精品教程(2)——将项目接入微信及简单交互
- html载入3d模型,webGL3D模型的加载与使用
- C++实现动态烟花,噼里啪啦过新年啦
- 虚拟机下的ROS无法打开笔记本摄像头
- 转换视角看问题---“两个世界”
- SAP OOALV 动态设置单元格可否编辑