閱讀1037 返回首頁    go 技術社區[雲棲]


快速玩轉ECS競價實例

快速玩轉阿裏雲競價實例

什麼是競價實例

競價實例是一種按照供需關係變化價格波動的一種後付費類型實例,相對於按量付費實例價格有較低的折扣。

競價型實例使您可以對 ECS 實例出價,這可以大幅降低您的 ECS 成本。阿裏雲會對每個可用區中的每種實例類型設置基礎價格,競價型實例會根據市場供需關係在基礎價格上進行一定的上下浮動(目前價格波動是按量付費價格的1~10折),如果您的出價高於當前實際的成交價,則可正常創建出實例,否則出價失敗,不進行生產。

當然低價的ECS服務也存在一定的風險,當市場成交價格高於您的出價時,或市場供需關係嚴重不均衡時,阿裏雲有權終止您的ECS實例,當然在終止前5分鍾,阿裏雲會進行meta信息的通知,您可以訂閱阿裏雲metasdata的信息以在ECS終止前進行數據的保存和清理工作,以避免數據的丟失。

競價型實例和按需實例的主要差別在於:競價型實例每小時價格會根據需求變動,並且阿裏雲可以根據競價型實例每小時價格或可用情況的變化終止單個競價型實例。

合理的使用阿裏雲ECS競價實例,最高可以為您降低50%90% 的運營成本(相比按量付費的實例),可以用相同的預算,將計算容量提升 210 倍。

什麼樣的業務適合使用競價型實例

競價實例非常適合於各種工作負載,如可彈性伸縮的Web站點服務、圖像渲染、大數據分析和大規模並行計算等,您的應用程序的分布度、可擴展性和容錯能力越高,就越能節省成本和提升吞吐量。

目前我們得出能在競價實例上執行最佳實踐的業務如下所示:

  1. 實時分析業務
  2. 大數據業務
  3. 地理空間勘測分析業務
  4. 圖像和媒體編碼業務
  5. 科學計算業務
  6. 可彈性伸縮的業務站點、網絡爬蟲業務
  7. 圖像和媒體編碼業務
  8. 基因計算業務
  9. 體驗測試業務:新一代ECS產品家族的規格意味著更加強大的計算處理能力,推廣初期您可以使用低至1折的價格進行SPOT做產品適用度測試,以便您後續選擇更有性價比的產品

玩法解密

出價模式

目前阿裏雲主要提供一次性競價請求,後續會推出持久性競價請求和連續時間段競價請求,當前主要在售的為一次性競價請求。

一次性競價請求主要有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分鍾的時間處理善後。

    注:metadata查詢URL:https://100.100.100.200/latest/meta-data/instance/spot/termination-time,返回格式示例:2015-01-05T18:02:00Z,時間為UTC時間,如果返回為空,說明可持續使用

  6. 測試您的應用程序,確保它很好地處理了意外終止的實例。您可以使用按量付費實例來運行應用程序,然後自行終止該按需實例,以便確認這一點。

收費策略

目前競價實例已經升級為秒級計費,每個小時整點出一次賬單,對應賬單周期的價格為該小時起始時間的價格(首個小時按照購買時的成交價格) 按照秒級進行計費,如下是一些實際使用的場景::

  1. 由於阿裏雲價格或市場供需關係導致的釋放,最少保證用戶使用1小時,超過1小時最後一個賬單周期按照秒級進行計費

    1. 出價太低1小時內實際成交價就高於用戶出價的,至少保證實際使用1小時,收1小時費用,費用單價為購買時的實時成交價
      • 示例1:如下圖所示,用戶小A在某天8:40出價0.012元/小時購買某實例,受價格波動影響,8:50實際成交價0.015元/小時高於用戶出價0.012元/小時,達到實例釋放標準,但阿裏雲承諾最少給用戶使用1小時,因此用戶在9:40進行中斷釋放,收費價格為用戶購買時的成交價格0.010元/小時,賬單周期為8:40-9:40 1小時 0.010元 1.png
    2. 實際使用超過1小時的按照賬單周期(整點出賬單)計費,最後一個賬單周期按照實際使用時間秒級計費,不足1分錢收1分錢,首個賬單周期為用戶購買時的實時成交價,後續每個賬單周期為對應賬單周期的起始實時成交價
      • 示例2:如下圖所示,用戶小B在8:40出價0.020元/小時購買了某實例,受價格波動影響,10:20時實時成交價0.028元/小時高於用戶的出價0.020元/小時,由於小B實際使用時長已經超過1小時,因此直接標記釋放,用戶共存在3個賬單周期內,8:00~9:00、9:00~10:00、10:00~11:00,收費詳情為:8:40~9:00 20分鍾,收費0.003元,9:00~10:00 1小時 0.016元,10:00~10:20 20分鍾 0.012元,合計 0.031元 實際使用時長1小時40分鍾 2.png
      • 示例3:如下圖所示,用戶小C在8:40出價0.025元/小時購買某實例規格,受價格波動影響,在10:50時實際成交價格0.031元/小時高於用戶的出價0.025元/小時,由於小C實際使用時長超過1小時,因此標記釋放,用戶共存在3個賬單周期內,8:00~9:00、9:00~10:00、10:00~11:00,實際用戶的賬單周期為:8:40~9:00 20分鍾 0.003元,9:00~10:00 1小時 0.016元,10:00~10:50 50分鍾 0.013元,合計 0.032元 實際使用時長2小時10分鍾 3.png
  2. 用戶自行釋放,按照實際賬單周期收費,秒級計費,最少收費1厘錢,不滿1厘錢按照1厘錢收取

    1. 用戶短時間內創建釋放,按照實際使用時間秒級計費,不足1厘錢收1厘錢
      • 示例4:用戶小D在8:40出價0.020元/小時,後再8:50釋放,因在一個賬單周期內,計費1小時,單價為當時成交價0.010元/小時,賬單周期 8:40-8:50 10分鍾 0.002元 4.png
      • 示例5:用戶小E在8:40出價0.020元/小時,在9:10釋放,一共占用2個賬單周期8:00-9:00、9:00~10:00,實際收費8:40-9:00 20分鍾 單價0.01元 實際收費 0.003元,9:00-9:10 單價0.016元,10分鍾,實際收費0.003元 合計0.006元 5.png
    2. 用戶實際使用時間超過1小時,按照實際賬單周期秒級計費。

      • 示例6:用戶小F在8:40出價0.035元/小時購買了某規格ECS,在10:50進行了釋放操作,用戶共占用3個賬單周期8:00~9:00、9:00~10:00、10:00~11:00,實際使用小時3小時(2小時10分鍾,不足1小時按1小時計算),賬單周期=實際小時數,最後一個賬單周期計費,實際計費如下:
        1. 8:40~9:00 單價 0.010元 20分鍾 0.003元
        2. 9:00~10:00 單價 0.016元 1小時 0.016元
        3. 10:00~10:50 單價 0.015元 50分鍾 0.012元 合計0.031元

      對應示意圖如下圖所示:
      6.png

使用小技巧

  1. 盡量避免整點開始購買,以避免庫存急劇下降,引發價格飆升,導致實際賬單計費較高
  2. 選擇一個合理的出價。您的出價應該足夠高,這樣您的請求才有機會完成,但又不能高於您願意支付的價格。對於不想關注價格趨勢變化,又希望使用較低的價格時,可使用SpotAsPriceGo按照係統低價計費。

Open API如何操作

請參考阿裏雲競價實例OpenApi入門實踐

最後更新:2017-11-22 00:34:13

  上一篇:go  android-plugmgr源代碼分析
  下一篇:go  MySQL的JOIN操作