搶占式執行個體作為成本節省的利器,一直在不斷推陳出新,持續優化。近期開放了無保護期新模式,即不承諾最低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:不支援. 即執行個體建立時指定的保護期資訊,一旦确定,後續是不能變更的。
記得提前
領取滿減代金卷哦