Ecs實例創建接口升級-RunInstances

現在提供的ECSOpenAPI有2個實例創建接口RunInstances和CreateInstance,由於CreateInstance接口提供時間較早,因此還有有依賴該接口的調用,但是RunInstances接口其實在設計和使用便利性上其實更勝一籌。

CreateInstance的創建調用是一次非常細粒度的原子操作,只會將實例創建成功,因此對於接口使用者來說並不一定是最方便的。首先最明顯的區別就是RunInstances接口的終態穩定狀態是Running,這會帶來多方面的影響,

調用效率提升

直接的優化就是實例從創建到啓動可以工作,調用的管控接口大大減少,創建n(小於100)臺實例時,之前的調用需要n次CreateInstance調用,需要至少n次StartInstance調用,而更換使用RunInstances接口後,由於支持批量創建,只需要一次接口調用即可。

CreateInstance接口創建的實例由於不去啓動,所以創建過程中也是不會直接分配公網IP的(當然我們的最佳實踐也不建議每臺使用的實例都使用公網IP進行管理--可以使用VPC和跳板機的方式進行網絡管理),如果有公網分配的需求,那麼使用RunInstances接口就再方便不過了,接口的原子操作中包含了實例的公網IP分配和實例啓動過程。創建成功的機器會帶有公網IP,可以直接登錄運維。

彈性能力的提升

其次就是創建參數中的差別,我們知道ECS的收費模式有包年包月和按量收費兩種,RunInstances接口天然支持了兩種收費模式(InstanceChargeType參數),同時一次請求的創建量從CreateInstance支持的單一實例創建提高支持到一次請求可以創建[1, 100]個實例(Amount參數),同時爲了方便實例的批量管理,批量創建出來的實例也可以設定一套順序的實例name(UniqueSuffix參數),所以使用RunInstances接口帶來的不僅是調用方式的提升,而且更是基礎設施平臺的彈性能力和運維效率提升。

提到批量創建,可能會有“直接的批量創建和循環一下創建批量不是一樣的”問題,其實這兩種操作(CreateInstance創建多次和RunInstances創建一次)是完全不同的,單個實例的創建封裝爲批量操作實際是將整個操作的原子性交給了自己,就會存在創建一半以後創建失敗無法處理的情況。而一次創建多個實例是將原子操作交給接口,要麼全部創建成功,要麼請求會直接失敗,如果有比如庫存不夠創建需求等情況,接口會直接返回失敗,可以提前知道整批實例的創建情況,也可以提早進行部署架構的調整(可用區的調整等)。同時,對於實例狀態的保證,RunInstances接口會不停重試啓動實例,直到啓動成功或達到重試上限次數,充分保證創建出的實例均爲Running狀態。

對其他特性的支持,得益於RunInstances的批量創建,可以很好地支持實例啓動模板功能 https://help.aliyun.com/document_detail/73916.html , 這個功能允許創建一套自定義的實例Spec(規格、網絡等特性)描述,並依託RunInstances的批量創建,可以秒級擴容出一組符合定義的實例。

接口對比圖

最後,放上RunInstances接口定義: https://help.aliyun.com/document_detail/63440.html , 並附上簡單版本接口對比

RunInstances CreateInstance
一次請求創建量 [1, 100] 1
創建穩定終態 Running Stopped
公網IP分配模式 可以接口直接分配 不分配,需要使用AllocatePublicIpAddress接口分配
支持的創建收費類型 包年包月和按量 按量
LaunchTemplate支持

代碼示例見ecs購買頁面( https://ecs-buy.aliyun.com/wizard/ ),選擇完參數後確認訂單頁的“生成Open API最佳實踐腳本”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章