天天看點

搶占式執行個體開放無保護期新模式

搶占式執行個體作為成本節省的利器,一直在不斷推陳出新,持續優化。近期開放了無保護期新模式,即不承諾最低1小時的保護期,但整體價格下調10%,讓您享受到更大的優惠。

今天來為大家介紹下搶占式執行個體開放的新特性, 即"無保護期模式"。主要與目前搶占式執行個體的差別是: 不承諾最低1小時的保護期,但最大的優勢是,在釋放機率無明顯差異情況下,整體價格比目前1小時保護期的執行個體還要再低10%,舉個例子:

以可用區:北京H、規格:ecs.g5.8xlarge 為例,目前按量原價是: 14.17元/時;目前1小時保護期搶占式執行個體價格為1折, 即1.417元/時, 而無保護期執行個體在該基礎上再下調10%,即為1.417*0.9=1.276元/時,無保護期相比1小時保護期,節省0.141元/時。

領取優惠劵有更大折扣哦
搶占式執行個體開放無保護期新模式

接入步驟

前提條件

由于目前無保護期特性隻在OpenAPI開放,我們預設您已經接入了過Aliyun的OpenAPI。如果之前沒有對接,可以參見:

SDK概述

進行SDK的接入。推薦SDK版本>=4.19.12 如下:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-ecs</artifactId>
    <version>4.19.12</version>
</dependency>           

第一步:檢視市場價格 DescribeSpotPriceHistory

使用OpenAPI DescribeSpotPriceHistory 來查詢曆史市場價格。相比原始檢視搶占式執行個體曆史價格的接口,隻需多一行代碼,即可檢視無保護期價格:

// request.setSpotDuration(0); // 如果SDK版本>=4.19.12,可以用該方法
request.putQueryParameter("SpotDuration", 0);// 如果SDK版本<4.19.12, 可以用該方法           

完整示例代碼如下:

// 無保護期價格查詢
request = new DescribeSpotPriceHistoryRequest();
request.setRegionId(beijingRegionId);
request.setInstanceType("ecs.g5.8xlarge");
request.setIoOptimized("optimized");
request.setZoneId("cn-beijing-h");
request.setStartTime("2020-09-22T00:00:00Z");
// request.setSpotDuration(0);  // 如果SDK版本>=4.19.12, 可以用該方法
request.putQueryParameter("SpotDuration", 0);  // 如果SDK版本<4.19.12, 可以用該方法
request.setNetworkType("vpc");
request.setAcceptFormat(FormatType.JSON);
client.getAcsResponse(request);           

第二步:建立執行個體 RunInstances

使用OpenAPI RunInstances 來建立執行個體。相比建立普通的搶占式執行個體,無保護期執行個體隻需多如下一行代碼即可:

// request.setSpotDuration(0);  // 如果SDK版本>=4.19.12, 可以用該方法
request.putQueryParameter("SpotDuration", 0); // 如果SDK版本<4.19.12, 可以用該方法           
RunInstancesRequest request = new RunInstancesRequest();
request.setVSwitchId(profile.get("vswId"));
request.setInstanceName(profile.get("vmName"));
request.setImageId(profile.get("imageId"));
request.setSecurityGroupId(profile.get("securityGroupId"));
request.setSystemDiskCategory(profile.get("systemDiskCategory"));
request.setSystemDiskSize(profile.get("systemDiskSize"));
request.setInstanceType(profile.get("vmType"));
request.setAcceptFormat(FormatType.JSON);
request.setInstanceChargeType("PostPaid");
request.setSpotStrategy("SpotAsPriceGo");
// request.setSpotDuration(0); // 如果SDK版本>=4.19.12, 可以用該方法
request.putQueryParameter("SpotDuration", 0);  // 如果SDK版本<4.19.12, 可以用該方法
client.getAcsResponse(request);           

第三步: 檢視執行個體保護期情況 DescribeInstances

使用OpenAPI DescribeInstances 來檢視執行個體詳情,根據傳回結果裡的"spotDuration==0"來判斷是否為無保護期模式。

SDK版本需要>=4.19.12才能查到該"spotDuration"屬性。

String regionId = hangzhouRegionId;
List<String> instanceIds = Lists.newArrayList(instanceId);
DescribeInstancesRequest request = new DescribeInstancesRequest();
request.setRegionId(regionId);
request.setInstanceIds(JSON.toJSONString(instanceIds));
request.setAcceptFormat(FormatType.JSON);
DescribeInstancesResponse response = client.getAcsResponse(request);
if(null != response.getInstances() && response.getInstances().size() > 0 ) {
Integer spotDuration = response.getInstances().get(0).getSpotDuration();
}           

第四步:檢視執行個體目前價格 DescribeSpotPriceHistory

根據 第一步:

檢視市場價格

,擷取到的價格清單,預設是按時間升序排列,取最後一個價格即為目前最新價格,也就是目前執行個體的計費價格。

// 無保護期價格查詢
request = new DescribeSpotPriceHistoryRequest();
request.setRegionId(beijingRegionId);
request.setInstanceType("ecs.g5.8xlarge");
request.setIoOptimized("optimized");
request.setZoneId("cn-beijing-h");
request.setStartTime("2020-09-22T00:00:00Z");
// request.setSpotDuration(0);   // 如果SDK版本>=4.19.12, 可以用該方法
request.putQueryParameter("SpotDuration", 0);  // 如果SDK版本<4.19.12, 可以用該方法
request.setNetworkType("vpc");
request.setAcceptFormat(FormatType.JSON);
DescribeSpotPriceHistoryResponse response = client.getAcsResponse(request);
List<SpotPriceType> spotPrices = response.getSpotPrices();
if(spotPrices == null || spotPrices.isEmpty()) {
  return;
}
SpotPriceType spotPriceType = spotPrices.get(spotPrices.size() - 1);
Float spotPrice = spotPriceType.getSpotPrice();
Coming soon           

相信通過上述步驟,各位已經可以玩轉無保護期特性。如果覺得代碼片段無法直接運作,比較繁瑣,請看示例代碼:建立與管理無保護期搶占式執行個體,直接可以線上運作。另外,無保護期特性也會在近期在售賣頁開放,敬請期待!

常見Q&A:

Q:價格上,無保護期是否始終會比1小時保護期優惠,優惠幅度怎樣?

A:我們會視需求與供給情況,适當擴大或者縮小優惠比例,目前整體保持在10%,為了保障您的利益,無保護期是會比對應的1小時保護期優惠。

Q:釋放率上,無保護期是否會比有保護期的高?

A:不會。從釋放機率上來說,無保護期與1小時保護期無太大差異。關于您擔心的釋放率情況,可以在售賣頁看到我們整體的釋放情況,基本都是維持在3%以下的,是以您可以安心使用。

Q,執行個體中斷優先級上,無保護期是否會與有保護期的有所差異?

A:不會。

Q:開放了無保護期之後,以後售賣頁建立的搶占式執行個體是否都會變成無保護期的?

A:不會。為了保障使用者的體驗的一緻性,除非您顯式指定需要建立無保護期,否則仍然跟以往保持一緻,即1小時保護期。

Q:無保護期執行個體是否仍然保留提前5分鐘的中斷通知?

A:仍然保留。為了給您足夠的中斷處理時間,5分鐘通知仍然會保留。

Q:資源量上,無保護期是否會比1小時保護期資源要少或者要多?

A:兩者不會有明顯差異。

Q:1小時保護期與無保護期模式支援互相切換麼?

A:不支援. 即執行個體建立時指定的保護期資訊,一旦确定,後續是不能變更的。

記得提前

領取滿減代金卷