日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

定時配置Serverless實例的RCU

Serverless實例RCU彈性伸縮的耗時通常為秒級,極小概率下可能因為跨機彈性擴容而耗時3~5分鐘。如果您對特定時段的穩定性有嚴格要求,您可以定時配置Serverless實例的RCU,提前增加RCU數量。本文將介紹如何對RCU的范圍進行周期性配置。

使用場景

  • Serverless實例會根據CPU和內存的負載情況進行彈性伸縮。自動彈性擴容的條件為CPU或內存使用率達到60%~80%的閾值范圍。若在特定時段對CPU或內存的性能穩定性有較高要求,可提前手動調整RCU的下限配置。

  • 彈性擴容的方式分為本地彈性擴容和跨機彈性擴容兩種。其中本地彈性擴容的耗時為秒級,跨機彈性擴容的耗時約為3~5分鐘。在99.8%的場景下,本地的秒級彈性擴容可以滿足Serverless的彈性擴容需求。然而,在本地資源不足的情況下,Serverless實例的彈性擴容需要跨機進行。由于跨機需要的時間較長,可能會對業務造成一定程度的影響。在特定時段內,為避免因自動彈性擴容未能及時完成而造成的影響,建議提前將RCU的上限和下限設置為相同的數值。

解決方案

使用定時任務調用ModifyDBInstanceSpec - 變更RDS實例API接口,在特定時段修改RCU的上下限,特定時段結束后恢復到默認的RCU上下限。

使用示例

如果需要在特定時段提升RCU下限,建議在該時段前10分鐘,定時提升RCU下限,為可能出現的跨機情況預留一定時間,以確保特定時段內實例的穩定性。

例如,某項業務在早高峰時間08:00~09:00希望保證4~8 RCU的配置,可以在07:50分將RCU的下限提升至4,在09:00再恢復到0.5~8 RCU的默認配置。

image

Python示例

本示例使用APScheduler配置定時任務。

  1. 完成RAM授權、準備Python環境、配置環境變量、安裝環境依賴等操作。

    1. 創建RAM用戶并完成授權

    2. 準備Python環境

    3. 配置環境變量

    4. 安裝依賴

  2. 打開命令行窗口執行如下命令,安裝APScheduler。

    pip install apscheduler
  3. 下載示例代碼。

    1. 訪問ModifyDBInstanceSpec,進入該接口在OpenAPI門戶的調試地址。

    2. 參數配置頁簽,配置如下參數。

    3. 參數

      描述

      取值

      DBInstanceId

      實例 ID。

      rm-bp1t8v93k6e15****

      PayType

      實例當前的付費類型。

      Serverless

      Direction

      實例變配類型。

      Serverless

      MaxCapacity

      RCU(Rds Capacity Unit)自動擴縮范圍的上限。

      8.0

      MinCapacity

      RCU(Rds Capacity Unit)自動擴縮范圍的下限。

      0.5

      AutoPause

      是否開啟Serverless實例的智能暫停和啟動。

      false

      SwitchForce

      是否開啟Serverless實例的強制擴縮容。

      true

    4. 在右側的SDK示例頁簽,選擇Python語言,單擊下載完整工程按鈕,下載示例代碼包。

    5. 說明

      建議下載SDK V2.0版本示例工程。

    6. 本地解壓并進入alibabacloud_sample目錄。

  4. 修改代碼,配置定時任務。

    修改sample.py,增加APScheduler定時任務的內容,使用Cron觸發器以設定定時任務的執行時間。例如,scheduler.add_job(my_scheduled_job, 'cron', hour=8, minute=0)代表每天的08時00分00秒。若您計劃每日07:50設置RCU范圍為[4, 8],并在每日09:00將RCU范圍恢復為[0.5, 8],示例代碼如下。

    sample.py

    # -*- coding: utf-8 -*-
    # This file is auto-generated, don't edit it. Thanks.
    import os
    import sys
    from typing import List, Dict
    from alibabacloud_rds20140815.client import Client as Rds20140815Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_rds20140815 import models as rds_20140815_models
    from alibabacloud_tea_util import models as util_models
    from alibabacloud_tea_console.client import Client as ConsoleClient
    from alibabacloud_tea_util.client import Client as UtilClient
    from apscheduler.schedulers.blocking import BlockingScheduler
    
    class Sample:
        def __init__(self):
            pass
    
        @staticmethod
        def create_client() -> Rds20140815Client:
            """
            使用AK&SK初始化賬號Client
            @return: Client
            @throws Exception
            """
            # 工程代碼泄露可能會導致 AccessKey 泄露,并威脅賬號下所有資源的安全性。以下代碼示例僅供參考。
            # 建議使用更安全的 STS 方式。
            config = open_api_models.Config(
                # 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
                access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                # 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
                access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
            )
            # Endpoint 請參考 https://api.aliyun.com/product/Rds
            config.endpoint = f'rds.aliyuncs.com'
            return Rds20140815Client(config)
    
        # 調用API修改實例serverless配置。
        @staticmethod
        def modify_db_instance_spec(config: Dict[str, float]) -> None:
            """
            Modify DB instance spec - the core task function
            """
            client = Sample.create_client()
            serverless_configuration = rds_20140815_models.ModifyDBInstanceSpecRequestServerlessConfiguration(
                max_capacity=config['max_capacity'],
                min_capacity=config['min_capacity'],
                auto_pause=config['auto_pause'],
                switch_force=config['switch_force']
            )
            modify_dbinstance_spec_request = rds_20140815_models.ModifyDBInstanceSpecRequest(
                dbinstance_id='rm-bp1t8v93k6e15****',
                direction='Serverless',
                pay_type='Serverless',
                serverless_configuration=serverless_configuration
            )
            runtime = util_models.RuntimeOptions(
                read_timeout=50000,
                connect_timeout=50000
            )
            try:
                resp = client.modify_dbinstance_spec_with_options(modify_dbinstance_spec_request, runtime)
                ConsoleClient.log(UtilClient.to_jsonstring(resp))
            except Exception as error:
                # 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
                print(error.message)
                print(error.data.get("Recommend"))
                UtilClient.assert_as_string(error.message)
    
        @staticmethod
        def main(args: List[str]) -> None:
            """
    
            :rtype: object
            """
            # 初始化Scheduler
            scheduler = BlockingScheduler()
    
            # 配置8點的serverless參數
            config_8am = {
                'max_capacity': 8,
                'min_capacity': 4,
                'auto_pause': False,
                'switch_force': True
            }
    
            # 配置9點的serverless參數
            config_9am = {
                'max_capacity': 8,
                'min_capacity': 0.5,
                'auto_pause': False,
                'switch_force': True
            }
    
            # 配置定時任務
            scheduler.add_job(Sample.modify_db_instance_spec, 'cron', hour=7, minute=50, args=[config_8am])
            scheduler.add_job(Sample.modify_db_instance_spec, 'cron', hour=9, minute=0, args=[config_9am])
    
            try:
                scheduler.start()
            except (KeyboardInterrupt, SystemExit):
                pass
    
    if __name__ == '__main__':
        Sample.main(sys.argv[1:])
    
    

Java示例

本示例使用Spring Schedule配置定時任務。

說明

本示例需要安裝Java 1.8以上開發環境。

  1. 完成RAM授權、配置環境變量等操作。

    1. 創建RAM用戶并完成授權

    2. 配置環境變量

  2. 下載示例程序并在本地解壓。

    示例程序請參見demo.zip

  3. 修改ScheduleTask.java的內容,根據實際情況配置定時任務。

    配置Cron表達式以設定定時任務的執行時間。其中,cron = "秒 分 時 日 月 周",詳情請參見Cron

    例如,@Scheduled(cron = "0 0 8 * * ? ") 代表每天的08時00分00秒。若您計劃每日07:50設置RCU范圍為[4, 8],并在每日09:00將RCU范圍恢復為[0.5, 8],示例代碼如下。

    ScheduleTask.java

    package com.example.demo;
    
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    
    @Component
    public class ScheduleTask {
      
        @Scheduled(cron = "0 50 7 * * ? ")
        public void scheduleTask8am() {
            ModifySpecParams params = new ModifySpecParams();
            params.setRegionId("cn-hangzhou");
            params.setDBInstanceId("rm-bp1t8v93k6e15****");
            params.setDirection("Serverless");
            params.setPayType("Serverless");
            params.setAutoPause(false);
            params.setSwitchForce(true);
            params.setMaxCapacity(8);
            params.setMinCapacity(4);
            ModifyDBInstanceSpec.modify(params);
        }
    
        @Scheduled(cron = "0 0 9 * * ? ")
        public void scheduleTask9am() {
            ModifySpecParams params = new ModifySpecParams();
            params.setRegionId("cn-hangzhou");
            params.setDBInstanceId("rm-bp1t8v93k6e15****");
            params.setDirection("Serverless");
            params.setPayType("Serverless");
            params.setAutoPause(false);
            params.setSwitchForce(true);
            params.setMaxCapacity(8);
            params.setMinCapacity(0.5);
            ModifyDBInstanceSpec.modify(params);
        }
    }

    部分參數的含義如下,請用實際數值進行替換。

    參數

    描述

    示例

    RegionId

    實例所屬地域。

    cn-hangzhou

    DBInstanceId

    實例ID。

    rm-bp1t8v93k6e15****

    PayType

    實例當前的付費類型。

    Serverless

    Direction

    實例變配類型。

    Serverless

    MaxCapacity

    RCU自動擴縮范圍的上限。

    8.0

    MinCapacity

    RCU自動擴縮范圍的下限。

    0.5

    AutoPause

    是否開啟Serverless實例的智能暫停和啟動。

    false

    SwitchForce

    是否開啟Serverless實例的強制擴縮容。

    true