阅读203 返回首页    go 阿里云 go 技术社区[云栖]


快速玩转阿里云竞价实例

快速玩转阿里云竞价实例

什么是竞价实例

竞价实例是一种按照供需关系变化价格波动的一种后付费类型实例,相对于按量付费实例价格有较低的折扣。

竞价型实例使您可以对 ECS 实例出价,这可以大幅降低您的 ECS 成本。阿里云会对每个可用区中的每种实例类型设置基础价格,竞价型实例会根据市场供需关系在基础价格上进行一定的上下浮动(目前价格波动是按量付费价格的1~10折),如果您的出价高于当前实际的成交价,则可正常创建出实例,否则出价失败,不进行生产。

当然低价的ECS服务也存在一定的风险,当市场成交价格高于您的出价时,或市场供需关系严重不均衡时,阿里云有权终止您的ECS实例,当然在终止前5分钟,阿里云会进行meta信息的通知,您可以订阅阿里云metasdata的信息以在ECS终止前进行数据的保存和清理工作,以避免数据的丢失。

竞价型实例和按需实例的主要差别在于:竞价型实例每小时价格会根据需求变动,并且阿里云可以根据竞价型实例每小时价格或可用情况的变化终止单个竞价型实例。

合理的使用阿里云ECS竞价实例,最高可以为您降低50%90% 的运营成本(相比按量付费的实例),可以用相同的预算,将计算容量提升 210 倍。

什么样的业务适合使用竞价型实例呢?

由于受市场供需关系和价格波动影响,竞价型实例可能存在被ECS释放的可能,因此有状态的,需要磁盘落地的应用可能无法使用,否则可能存在数据丢失的风险,目前来看以下几种类型最适合竞价型实例:

  1. 能进行弹性扩展和自由伸缩的业务,如无状态 Web 服务、图像渲染、大数据分析、视频编解码,批量计算等
  2. 阿里云新一代规格测试。新一代的ECS服务意味着更加强劲的性能,但也意味着更高的价格,可在推广初期使用较低的价格购买竞价,以进行评测看是否能使用新机型提升性能降低部署节点来缩减成本。

玩法解密

出价模式

目前阿里云主要提供一次性竞价请求,后续会推出持久性竞价请求和连续时间段竞价请求,当前主要在售的为一次性竞价请求。

一次性竞价请求主要有2种出价模式:

  1. 用户出能接受的最高价(SpotWithPriceLimit)
    用户可以在控制台看到指定可用区指定规格的历史价格,以推算自己应该的出价,还有一个重要指标,目前竞价实例的最高价为按量付费的价格,用户在控制台购买时可以看到一个价格选项区间,如下图所示,您在对应的区间直接出一个价格即可。当然,最好是出一个合理的价格,否则您的实例可能会很快被释放哦。
    1.png

    需要说明的是这里的出价是指实例规格的出价,不包含磁盘、带宽,只有计算部分有竞价优惠哦。
    
  2. 不出价,随低价波动,使用低价(SpotAsPriceGo)
    目前open api可采用不出价,指定SpotStrategy为SpotAsPriceGo(API文档地址:https://help.aliyun.com/document_detail/25499.html?spm=5176.doc25484.6.798.eAtJoe)则表示使用随低价波动

快速购买

目前和阿里云ECS其他付费方式一样,可以通过控制台openAPI两种方式购买

  • 控制台购买

    1. 在原来购买页面的上方可选择竞价实例,如下图所示,如果你不能看到竞价实例标签,说明你还未在我们的产品开放名单中,如果此时您依旧希望使用,可通过工单系统联系我们的客服进行开通。 1.png
    2. 包年包月按量付费一样,选择网络类型、镜像、操作系统等
    3. 在购买策略分区选择设置上限价格并进行出价,默认系统给出了价格波动的区间,请按照您的承载能力合理的出价,出价太低会导致无法成交,或成交后使用时间太短(目前一旦成交,阿里云会保证您至少使用1个小时的时间) 1.png
    4. 点击立即购买进行订单提交
  • openAPI购买

    1. openAPI对应文档地址:https://help.aliyun.com/document_detail/25499.html?spm=5176.doc25484.6.798.eAtJoe
    2. openAPI购买竞价实例重要参数:
      1. InstanceChargeType 需要选择:PostPaid,默认值:PostPaid
      2. SpotStrategy 需要选择SpotWithPriceLimit:设置上限价格SpotAsPriceGo:系统自动出价,最高按量付费价格其中一种。
      3. SpotPriceLimit,只有SpotStrategy选择为SpotWithPriceLimit才生效,支持最大3 位小数。
    3. 哪些集群能买到竞价实例呢?可使用openAPI接口DescribeZones查询,对应文档地址:https://help.aliyun.com/document_detail/25610.html?spm=5176.doc25484.6.880.Lx2li9

处理中断

对竞价型实例的需求在不同时间可能有显着的差异,竞价型实例的可用性也会因为未使用 ECS 实例的数量而差别巨大。此外,不论您的出价有多高,您的竞价型实例仍有可能会中断。因此,必须确保应用程序针对竞价型实例中断做好准备。**我们强烈建议您不要为不能中断的应用程序使用竞价型实例。**

下面列出了阿里云终止您的竞价型实例的可能原因:

  1. 价格 – 现货价格高于您的出价。
  2. 容量 – 如果没有足够的未用 ECS 实例来满足对竞价型实例的需求,阿里云将从出价最低的实例开始终止竞价型实例。如果多个竞价型实例的出价相同,则随机确定实例的终止顺序。

下面提供了在您使用竞价型实例时可以遵循的最佳实践:

  1. 选择一个合理的出价。您的出价应该足够高,这样您的请求才有机会完成,但又不能高于您愿意支付的价格。这非常重要,因为在长时间供应不足的情况下,现货价格可能会在这段时间内居高不下,因为此时价格依据的是最高出价。我们强烈建议您的出价高于按需实例的价格。
  2. 使用包含所需软件配置的镜像,确保您的实例在请求完成时随时可以启动。您还可以使用用户数据在启动时运行命令。
  3. 在不会受竞价型实例终止影响的位置例行存储重要数据。例如,您可以使用 独立云盘 、OSS、RDS等作为数据存储节点。
  4. 将工作拆分为小的任务 (使用网格、Hadoop 或基于队列的架构) 或者使用检查点,以便您经常保存工作。
  5. 使用竞价型实例终止通知监控您的竞价型实例的状态。您可以通过metadata接口1分钟获取一次实例的状态,阿里云ECS会在终止前5分钟通知metadata,最坏情况下你有4分钟的时间处理善后。
  6. 测试您的应用程序,确保它很好地处理了意外终止的实例。您可以使用按量付费实例来运行应用程序,然后自行终止该按需实例,以便确认这一点。

收费策略

目前竞价实例采用小时收费制,每个小时整点出一次账单,计费策略中分2中场景:

  1. 由于阿里云价格或市场供需关系导致的释放,最少保证用户使用1小时,超过1小时最后一个账单周期不计费

    1. 出价太低1小时内实际成交价就高于用户出价的,至少保证实际使用1小时,收1小时费用,费用单价为购买时的实时成交价
      • 示例1:如下图所示,用户小A在某天8:40出价12元/小时购买某实例,受价格波动影响,8:50实际成交价15元/小时高于用户出价12元/小时,达到实例释放标准,但阿里云承诺最少给用户使用1小时,因此用户在9:40进行中断释放,收费价格为用户购买时的成交价格10元/小时,账单周期为8:00-9:00 1小时 10元 1.png
    2. 实际使用超过1小时的按照账单周期(整点出账单)计费,最后一个账单周期不计费,首个账单周期为用户购买时的实时成交价,后续每个账单周期为对应账单周期的起始实时成交价
      • 示例2:如下图所示,用户小B在8:40出价20元/小时购买了某实例,受价格波动影响,10:20时实时成交价28元/小时高于用户的出价20元/小时,由于小B实际使用时长已经超过1小时,因此直接标记释放,用户共存在3个账单周期内,8:00~9:00、9:00~10:00、10:00~11:00,由于最后一个账单周期是由于阿里云价格因素导致,因此不收费,最终用户账单周期为8:00~9:00 1小时 10元,9:00~10:00 1小时 16元 合计2小时 26元 实际使用时长1小时40分钟 2.png
      • 示例3:如下图所示,用户小C在8:40出价25元/小时购买某实例规格,受价格波动影响,在10:50时实际成交价格31元/小时高于用户的出价25元/小时,由于小C实际使用时长超过1小时,因此标记释放,用户共存在3个账单周期内,8:00~9:00、9:00~10:00、10:00~11:00,由于最后一个账单周期是由于阿里云价格因素导致,因此不收费,最终用户账单周期为8:00~9:00 1小时 10元,9:00~10:00 1小时 16元 合计2小时 26元 实际使用时长2小时10分钟 3.png
  2. 用户自行释放,按照实际账单周期收费,如果账单周期数大于实际使用小时数(不足1小时按1小时计算),则最后一个账单周期不计费

    1. 用户短时间内创建释放,实际使用时间不足1小时,如果在一个账单周期内收费1小时,超过1个账单周期,最后一个周期不收费,依旧收费1小时
      • 示例4:用户小D在8:40出价20元/小时,后再8:50释放,因在一个账单周期内,计费1小时,单价为当时成交价10元/小时,账单周期 8:00-9:00 1小时 10元 1.png
      • 示例5:用户小E在8:40出价20元/小时,在9:10释放,一共占用2个账单周期8:00-9:00、9:00~10:00,但用户实际使用小时数为1小时(40分钟,不足1小时按1小时计算),账单周期大于实际使用小时数,则最后一个账单周期不计费,因此用户实际账单为8:00~9:00,单价为成交时的实时价10元/小时 2.png
    2. 用户实际使用时间超过1小时,按照实际账单周期收费,如果账单周期数大于实际使用小时数(不足1小时按1小时计算),则最后一个账单周期不计费,其中首个账单周期单价为创建时的实时成交价,后续的账单周期按照周期开始时的实时价格计算。

      • 示例6:用户小F在8:40出价35元/小时购买了某规格ECS,在10:50进行了释放操作,用户共占用3个账单周期8:00~9:00、9:00~10:00、10:00~11:00,实际使用小时3小时(2小时10分钟,不足1小时按1小时计算),账单周期=实际小时数,最后一个账单周期计费,实际计费如下:
        1. 8:00~9:00 10元 1小时
        2. 9:00~10:00 16元 1小时
        3. 10:00~11:00 15元 1小时

      对应示意图如下图所示:
      1.png

使用小技巧

  1. 尽量避免整点开始购买,以避免库存急剧下降,引发价格飙升,导致实际账单计费较高
  2. 选择一个合理的出价。您的出价应该足够高,这样您的请求才有机会完成,但又不能高于您愿意支付的价格。对于不想关注价格趋势变化,又希望使用较低的价格时,可使用SpotAsPriceGo按照系统低价计费。

最后更新:2017-09-18 21:34:05

  上一篇:go  如何配置通过ODBC方式连接Deepgreen数据库
  下一篇:go  Ant Design Mobile 2.0 beta 发布