彈性伸縮
彈性伸縮(Auto Scaling)是指系統根據實際需求動態調整資源(例如計算資源、存儲資源、帶寬等),以滿足不同負載情況下的業務需求。通過彈性伸縮,系統能夠在高峰期自動增加資源,在低峰期自動釋放資源,提高系統的穩定性和性能。彈性伸縮能力是業務穩定性方案中的重要組成部分。它可以應用于各種系統,包括云計算環境、Web應用、數據庫等。彈性伸縮的主要目的是提供可靠的系統性能,確保系統在高負載和低負載情況下都能有效利用資源。
彈性伸縮有以下特點:
自動化:彈性伸縮是自動進行的,無需人工干預。系統會根據預設的規則和策略自動調整資源。
實時響應:彈性伸縮能夠根據實時的負載情況快速調整資源。當負載增加時,系統會自動增加資源以滿足需求。當負載減少時,系統會自動釋放多余的資源以節省成本。
靈活性:彈性伸縮可以根據不同的需求和規則進行配置。可以根據不同的指標,如CPU使用率、內存利用率、網絡帶寬或者自定義業務指標(QPS,RT)等來觸發伸縮操作。
具體實施方案如下:
監測和度量:首先需要對系統的負載和資源進行監測和度量,收集關鍵的性能指標和數據。可以使用監控工具和指標系統來實現。
規則和策略:根據監測數據,制定彈性伸縮的規則和策略。這些規則可以包括資源閾值、觸發條件、伸縮策略等。
自動化伸縮:根據規則和策略,配置自動化的伸縮機制。這可以通過云服務提供商的彈性伸縮功能、自動化腳本或者容器編排工具來實現。
監測和優化:定期監測和評估彈性伸縮的效果,并進行優化。根據實際情況,調整伸縮規則和策略,以獲得更好的性能和成本效益。
阿里云的彈性伸縮服務(Elastic Scaling Service,簡稱ESS)具有自動化、降成本、高可用、靈活智能以及易審計的優勢。通過簡單的操作步驟就可以配置多種伸縮模式,結合業務場景實現自動化的伸縮機制,使系統能夠快速響應負載的變化,并根據需求調整資源,從而提供更好的用戶體驗和服務質量。
ESS的工作流程如下:
傳統管理應用實例數有固定實例數、HPA和CronHPA三種方法,分別有各自的缺陷和不足點,比如資源浪費,彈性滯后,以及需要根據業務變化調整定時策略,易用性較差的問題。尤其是在時效性上有極致要求的,則需要更加精準和快速啟動的能力。這個時候就需要考慮serverless以及AHPA等更高級能力。
Serverless 容器運行方式提供的ECI (Elastic Container Instance)彈性調度功能,實現更優彈性、免容量規劃、按需使用按需計費的能力。在Job類任務、CI/CD、Spark大數據計算、在線應用彈性等場景中可以顯著提升應用部署的彈性效率,也可以降低應用的計算成本。
傳統的HPA (Horizontal Pod Autoscaler)策略在業務量上漲之后開始擴容,會存在滯后的資源供給不能及時補充業務的問題。 而AHPA (Advanced Horizontal Pod Autoscaler) 可以根據業務歷史指標,自動識別彈性周期并對容量進行預測,提前進行彈性規劃,解決彈性滯后的問題,實現更快(毫秒級預測,秒級彈性),更穩(主動預測和被動預測相結合),更準(支持分鐘級邊界保護配置)。