開發與維運

EasySDK: ECS庫存資源推薦的利器

導語

隨著阿里雲越來越多的地域與可用區的開服, 產品規格逐步迭代,隨之而來的是日益龐大的可用區數目, 眼花繚亂的規格類型, 繁複龐雜的定價策略。不知道您是否會因此產生選擇困難症? 該如何選擇合適的地域與可用區? 該如何選擇合適的規格? 該怎樣設定預期價格? 怎樣才能避免庫存資源不足?

基於上述這些問題, 我們精心為您打造了開源的一站式SDK, 幫助您有效解決上述問題。本文主要講解 "資源推薦子模塊" 的能力與使用方法。

關鍵詞: 簡單, 有效

適合哪種場景?

隨著阿里雲用戶的增長與使用場景的多樣化, 我們發現如下問題日益凸顯:

1. 庫存問題:
a. 由於ECS庫存量出於安全考慮沒有對外透露, 因此用戶無法感知每個可用區每個規格的具體絕對庫存量. 隨機性挑選可用區與規格, 可靠性不高, 從而經常性出現創建實例時資源不足的問題.
b. 我們開源的EasySDK, 創新性地使用"遞進式算法", 經過內部嚴密的論證, 能夠保證排序靠前的實例規格庫存量相對較高.

2. 重複代碼問題:
a. 例如某用戶需要按照價格最低策略, 全網範圍內創建搶佔式實例, 需要對接5+個ECS API接口, 才能獲取到有效信息.
b. 我們開源的EasySDK, 直接封裝了這些boiler-plate代碼, 通用場景幾行代碼即可解決問題.

推薦有效性怎樣?

"有效" 是EasySDK的另一個核心要點。

作為對外開放的第一款SDK插件, 推薦結果的有效性經過了我們嚴密的論證. 以"庫存優先"策略為例, 我們將各個可能的場景進行枚舉與分析, 經過"遞進式算法"的模擬結果, 與我們後臺實際的庫存量進行相關性分析, 綜合可信度在85%以上。 所以您可以放心使用. 具體有效性驗證方案, 後續我們會單獨文章描述, 在此就不再贅述。

如何接入使用?

使用EasySDK, 我們秉承核心點為 "簡單", 通過如下簡單3步即可接入使用:

第一步: 引入依賴

<dependency>
    <groupId>com.aliyun.ecs.easysdk</groupId>
    <artifactId>preemptive-instance-recommendation</artifactId>
    <version>1.1.0</version>
</dependency>

第二步: 初始化SDK

// 這裡的accessKey需要替換為您的阿里雲accessKey
String accessKey = "<your-access-key>";
// 這裡的secretKey需要替換為您的阿里雲secretKey
String secretKey = "<your-secret-key>";
EasyEcsSDK.setProperty("aliyun.easysdk.sdk.ecs.access_key_id", accessKey);
EasyEcsSDK.setProperty("aliyun.easysdk.sdk.ecs.access_secret", secretKey);
EasyEcsSDK.init();

第三步: 調用推薦方法

PreemptiveInstanceRecommendationService preemptiveInstanceRecommendationService = EasyEcsSDK.getService(
    PreemptiveInstanceRecommendationService.class);
PreemptiveInstanceRecommendationRequest request = new PreemptiveInstanceRecommendationRequest();
List<String> regions = new ArrayList<String>();
regions.add("cn-beijing");
regions.add("cn-hangzhou");
regions.add("cn-shanghai");
request.setRegions(regions);
request.setStrategy(EnumRecommendationStrategy.SUFFICIENT_INVENTORY_FIRST);
request.setCores(1);
request.setProductCategory(EnumEcsProductCategory.EntryLevel);
request.setLimit(10);
Response<List<PreemptiveInstanceRecommendation>> recommend = preemptiveInstanceRecommendationService.recommend(
    request);

返回的<可用區, 規格>列表, 即按照您輸入的策略(如樣例中的"庫存優先"), 進行排序, 即庫存越充足, 排序越靠前。

更多完整樣例參見: https://github.com/aliyun/alibabacloud-ecs-easy-sdk/tree/master/demos
後續更多場景樣例我們會逐步添加完善, 同時也期待各位的積極貢獻與反饋。

後續計劃

我們後續會持續維護該開源項目, 目前已經收到各方的積極反饋, 具體項目RoadMap可以參見:
https://github.com/aliyun/alibabacloud-ecs-easy-sdk/projects/1

FAQ

Q: 項目地址是在哪裡?
A: 項目開源在GitHub上: https://github.com/aliyun/alibabacloud-ecs-easy-sdk 您可以依據自己的需求使用或者修改源代碼。

Q: 該SDK是官方維護的麼?
A: 是的, 是由ECS團隊進行專業長期的維護, 但同時也希望您, 作為ECS的使用者, 能夠參與到其中, 積極提交issue, 貢獻代碼。

Q: 支持哪些語言?
A: 目前只支持Java. CLI工具在密集開發中, Python 與 Go 語言的支持仍在規劃中。歡迎您的參與!

Q: 資源推薦能力支持哪幾種策略?
A: 目前支持三種策略,:
1、價格優先, 即最低的價格排序越靠前;
2、庫存優先, 即越充足的庫存排序越靠前;
3、產品代數優先, 即越新的產品規格排序越靠前。不過針對需要穩定持有的搶佔式實例, 我們推薦您使用"庫存優先"策略, 防止因為短時間的批量購買導致價格劇烈波動。

Leave a Reply

Your email address will not be published. Required fields are marked *