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

異步調(diào)用

如果您的函數(shù)中存在耗時較長、資源消耗較大或容易出錯的邏輯,您可以使用異步調(diào)用的方式,讓您的程序響應(yīng)更加迅速,更加可靠地應(yīng)對突發(fā)流量。當(dāng)您對函數(shù)發(fā)起異步調(diào)用時,無需等待函數(shù)響應(yīng),相關(guān)請求會被持久化保存到函數(shù)計算內(nèi)部隊列中,然后被可靠地處理。本文介紹異步調(diào)用的應(yīng)用場景以及常見功能。

應(yīng)用場景

異步調(diào)用適用的場景示例如下:

  • 音視頻處理

    用戶使用函數(shù)計算處理音視頻業(yè)務(wù)時,涉及處理編碼、解碼或轉(zhuǎn)碼等耗時較長的任務(wù),異步調(diào)用這些任務(wù)使其在后臺運行,前端無需等待,提升用戶體驗。另外,如果音視頻項目較大,需要將其分割成多個任務(wù)并行處理或者需要將一個視頻轉(zhuǎn)換為多種格式,異步調(diào)用多個函數(shù)可以輕松實現(xiàn)以上并行處理需求,縮短任務(wù)處理時間。

  • 數(shù)據(jù)ETL處理

    ETL流程中,從源頭提取數(shù)據(jù)、轉(zhuǎn)換處理和加載到目標(biāo)系統(tǒng)這三個步驟可能涉及多個獨立的操作,例如數(shù)據(jù)庫查詢、文件讀寫或數(shù)據(jù)清洗等,采用異步調(diào)用可以讓這些操作并行執(zhí)行,減少處理時間,提升系統(tǒng)性能。而針對耗時較長的任務(wù),例如處理大規(guī)模數(shù)據(jù)集或復(fù)雜的數(shù)據(jù)轉(zhuǎn)換,異步調(diào)用允許這些任務(wù)在后臺運行,前端無需等待,提升用戶體驗。

  • 開發(fā)Web應(yīng)用

    函數(shù)計算可以搭配其他云產(chǎn)品快速構(gòu)建Web應(yīng)用。用戶在表單提交、搜索查詢或加載內(nèi)容較多的情況下,采用異步調(diào)用可以避免頁面因長時間等待后端響應(yīng)而出現(xiàn)的卡頓現(xiàn)象,此時用戶可以繼續(xù)與頁面的其他部分交互,而不會感受到延遲。高并發(fā)場景下,例如大量用戶同時訪問,異步調(diào)用函數(shù)又可以分散請求壓力,防止服務(wù)過載。

延遲調(diào)用

針對某些場景,您提交一次異步調(diào)用后,需要函數(shù)計算對其進行延遲觸發(fā)。您可以通過調(diào)用API(SDK)實現(xiàn)延遲調(diào)用函數(shù)。

在代碼中添加HTTP請求頭x-fc-async-delay,取值范圍為(0,3600),單位為秒。函數(shù)計算將從您觸發(fā)執(zhí)行開始計算,延遲x-fc-async-delay設(shè)置的時間后觸發(fā)函數(shù)調(diào)用。

重試策略

異步調(diào)用機制提供錯誤處理和重試機制,如果某個步驟失敗,可以重新調(diào)度該任務(wù)而不影響整個流程。當(dāng)函數(shù)異步調(diào)用執(zhí)行失敗后,函數(shù)計算會自動進行錯誤重試。

重試機制

對于常見錯誤,系統(tǒng)默認的重試策略如下表所示。

錯誤類型

服務(wù)器端行為

是否計費

解決方案

函數(shù)計算的錯誤類型為HandledInvocationErrorUnhandledInvocationError

默認重試3次,或根據(jù)異步設(shè)置次數(shù)重試。

按照調(diào)用次數(shù)計費。關(guān)于計費的詳細信息,請參見計費概述

請自行排查您的代碼。

函數(shù)并發(fā)執(zhí)行超上限。

以二進制指數(shù)退避方式重試執(zhí)行5小時。當(dāng)您的函數(shù)執(zhí)行失敗后將在0.5秒后開始重試,后續(xù)重試執(zhí)行的時間間隔將以二進制指數(shù)退避方式計算,即重試時間間隔為1秒、2秒、4秒、8秒等持續(xù)重試5小時。

單個阿里云賬號(主賬號)在單個地域內(nèi)總實例數(shù)默認限制為100,實際數(shù)值以配額中心為準(zhǔn),如果您需要提高該限制,請前往配額中心申請。

系統(tǒng)內(nèi)部錯誤。

請加入釘釘用戶群(釘釘群號64970014484)咨詢。

函數(shù)計算資源不足。

配置重試策略

函數(shù)計算支持自定義重試次數(shù)和消息最大存活時長。

  1. 登錄函數(shù)計算控制臺,在左側(cè)導(dǎo)航欄,單擊函數(shù)

  2. 在頂部菜單欄,選擇地域,然后在函數(shù)頁面,單擊目標(biāo)函數(shù)。

  3. 在函數(shù)詳情頁面,選擇配置頁簽,然后在左側(cè)導(dǎo)航欄,選擇異步配置,在異步配置區(qū)域,單擊編輯

  4. 異步配置面板,設(shè)置以下配置項,然后單擊部署

    配置項

    解釋說明

    任務(wù)模式

    是否開啟異步任務(wù)模式,請參見異步任務(wù)

    最大重試次數(shù)

    用于配置異步調(diào)用流程中的消息最大重試次數(shù),取值范圍為[0,8]。

    函數(shù)計算在默認情況下,對異步觸發(fā)失敗的消息進行3次重試,您可以根據(jù)業(yè)務(wù)需求減少或增加對異步調(diào)用的重試。

    消息最大存活時長

    用于配置異步調(diào)用流程中的消息最大存活時長,取值范圍[1,604800],默認為86400,單位為秒。

    該時長從觸發(fā)異步調(diào)用時開始計算,如果超過配置的消息最大存活時長,該條消息將被丟棄。未被消費的消息將計入云監(jiān)控異步調(diào)用觸發(fā)事件(次)指標(biāo)。關(guān)于指標(biāo)詳情,請參見監(jiān)控指標(biāo)

結(jié)果回調(diào)

函數(shù)計算接收異步調(diào)用請求后,將請求持久化后會立即返回響應(yīng),無需等待請求執(zhí)行完成。如您需要保留執(zhí)行失敗且超過最大重試次數(shù)被丟棄的請求,或通知下游異步調(diào)用結(jié)果,可以通過配置結(jié)果回調(diào)功能實現(xiàn)。配置異步目標(biāo)服務(wù)后,異步調(diào)用請求執(zhí)行完成,函數(shù)計算根據(jù)執(zhí)行結(jié)果自動回調(diào)對應(yīng)的服務(wù)。

功能原理

結(jié)果回調(diào)流程如下圖所示。

image

適用場景

  • 保存丟棄的事件供后續(xù)使用

    當(dāng)異步請求執(zhí)行失敗,并且按照指定的策略重試后仍然失敗,函數(shù)計算將丟棄該請求。如果您配置了失敗目標(biāo),函數(shù)計算將自動把失敗請求的上下文信息推送到消息隊列 RocketMQ 版等消息服務(wù)中,以便后續(xù)處理。您也可以將目標(biāo)服務(wù)設(shè)置為另一個函數(shù),函數(shù)計算將自動把失敗請求的上下文信息推送到該函數(shù),執(zhí)行您自定義的錯誤處理邏輯。

  • 自動通知下游服務(wù)執(zhí)行結(jié)果

    請求執(zhí)行成功后,如果您配置了成功目標(biāo),函數(shù)計算系統(tǒng)會自動將成功請求的上下文信息推送到下游目標(biāo)服務(wù)。例如,您配置了使用函數(shù)計算實現(xiàn)自動解壓上傳到OSS的ZIP文件,解壓完成后想要接收消息通知,可采用為目標(biāo)函數(shù)配置異步調(diào)用結(jié)果回調(diào)目標(biāo)服務(wù)。

支持的異步調(diào)用目標(biāo)服務(wù)

當(dāng)您為函數(shù)配置了異步調(diào)用目標(biāo),并且異步調(diào)用后的結(jié)果符合條件時,函數(shù)計算會將請求上下文和數(shù)據(jù)推送至對應(yīng)服務(wù)。您可以針對不同函數(shù)、別名和版本配置不同的目標(biāo)服務(wù)。目前支持的異步調(diào)用目標(biāo)服務(wù)如下:

  • 輕量消息隊列(原 MNS)

  • 函數(shù)計算

  • 事件總線 EventBridge

  • 消息隊列 RocketMQ 版

說明

僅支持將云消息隊列 RocketMQ 版的4.0系列實例配置為目標(biāo)服務(wù),不支持將5.0系列實例設(shè)置為目標(biāo)服務(wù)。更多信息,請參見4.x和5.x版本差異及兼容性說明

異步調(diào)用目標(biāo)服務(wù)的配置說明如下:

  • 異步調(diào)用目標(biāo)的事件內(nèi)容

    輕量消息隊列(原 MNS)函數(shù)計算消息隊列 RocketMQ 版作為函數(shù)異步調(diào)用目標(biāo)時,事件內(nèi)容示例如下。

    {
      "timestamp": 1660120276975,
      "requestContext": {
        "requestId": "xxx",
        "functionArn": "acs:fc:{regionid}:{accountid}:functions/xxxx",
           "condition": "FunctionResourceExhausted", 
            "approximateInvokeCount": 3
      },
      "requestPayload": "",
      "responseContext": {
        "statusCode": 200,
        "functionError": ""
      },
      "responsePayload": ""
    }

    表 1. 參數(shù)說明

    參數(shù)

    說明

    timestamp

    調(diào)用時間戳。

    requestContext

    請求上下文。

    requestContext.requestId

    異步調(diào)用的請求ID。

    requestContext.functionArn

    異步執(zhí)行的函數(shù)ARN。

    requestContext.condition

    調(diào)用錯誤碼。

    requestContext.approximateInvokeCount

    異步調(diào)用的執(zhí)行次數(shù)。當(dāng)該值大于1時,說明函數(shù)計算對您的函數(shù)進行了重試。

    requestPayload

    請求函數(shù)的原始負載。

    responseContext

    返回上下文。

    responseContext.statusCode

    調(diào)用函數(shù)的返回碼(系統(tǒng))。當(dāng)該返回碼不為200時,說明出現(xiàn)了系統(tǒng)錯誤。

    responseContext.functionError

    調(diào)用錯誤信息。

    responsePayload

    執(zhí)行函數(shù)返回的原始負載。

    事件總線 EventBridge作為函數(shù)異步調(diào)用目標(biāo)時,事件示例如下。具體信息,請參見事件概述

    {
        "datacontenttype": "application/json",
        "aliyunaccountid": "143xxxx",
        "data": {
            "requestContext": {
                "condition": "",
                "approximateInvokeCount": 1,
                "requestId": "0fcb7f0c-xxxx",
                "functionArn": "acs:fc:{regionid}:{accountid}:functions/xxxx"
            },
            "requestPayload": "",
            "responsePayload": "",
            "responseContext": {
                "functionError": "",
                "statusCode": 200
            },
            "timestamp": 1660120276975
        },
        "subject": "acs:fc:{regionid}:{accountid}:functions/xxxx",
        "source": "acs:fc",
        "type": "fc:AsyncInvoke:succeeded",
        "aliyunpublishtime": "2021-01-03T09:44:31.233Asia/Shanghai",
        "specversion": "1.0",
        "aliyuneventbusname": "xxxxxxx",
        "id": "ecc4865xxxxxx",
        "time": "2021-01-03T01:44:31Z",
        "aliyunregionid": "cn-shanghai-vpc",
        "aliyunpublishaddr": "199.99.xxx.xxx"
    }
  • 負載限制

    支持的異步調(diào)用目標(biāo)服務(wù)負載的最大限制如下:

    • 輕量消息隊列(原 MNS):64 KB

    • 函數(shù)計算:128 KB

    • 事件總線 EventBridge:64 KB

    • 消息隊列 RocketMQ 版:4 MB

  • 避免循環(huán)調(diào)用

    當(dāng)您在配置異步執(zhí)行目標(biāo)時,請確保不要出現(xiàn)循環(huán)調(diào)用的情況。例如,您為函數(shù)A配置了成功調(diào)用時的異步目標(biāo)為函數(shù)B,為函數(shù)B配置了成功調(diào)用時的異步目標(biāo)為函數(shù)A。當(dāng)您異步觸發(fā)函數(shù)A并且執(zhí)行成功后,則可能出現(xiàn)A到B,再到A的循環(huán)調(diào)用的情況。

配置異步調(diào)用目標(biāo)服務(wù)

  1. 登錄函數(shù)計算控制臺,在左側(cè)導(dǎo)航欄,單擊函數(shù)

  2. 在頂部菜單欄,選擇地域,然后在函數(shù)頁面,單擊目標(biāo)函數(shù)。

  3. 在函數(shù)詳情頁面,選擇配置頁簽,在左側(cè)導(dǎo)航欄,選擇異步配置,按需配置參數(shù)信息。

    • 配置成功目標(biāo)

      1. 成功目標(biāo)區(qū)域,單擊編輯

      2. 成功目標(biāo)面板,成功時調(diào)用其他服務(wù)選擇啟用,然后配置當(dāng)函數(shù)成功執(zhí)行后將需要發(fā)送結(jié)果的目標(biāo)云服務(wù)。參數(shù)信息如下:

        參數(shù)

        說明

        目標(biāo)服務(wù)

        函數(shù)計算。當(dāng)目標(biāo)服務(wù)選擇的是函數(shù)計算時,需配置以下參數(shù)信息:

        • 函數(shù)名稱:指定目標(biāo)函數(shù)的名稱。

        • 版本或別名:指定函數(shù)的別名或版本。

        輕量消息隊列(原 MNS)。當(dāng)目標(biāo)服務(wù)選擇的是輕量消息隊列(原 MNS)時,需配置以下參數(shù)信息:

        • 目標(biāo)類型:按需選擇目標(biāo)類型,取值為:

          • 隊列

            隊列模型提供高可靠、高并發(fā)的一對一消費模型,即隊列中的每一條消息都只能夠被某一個消費者消費。

          • 主題

            主題模型提供一對多的發(fā)布訂閱模型,支持消息通知。

        • 隊列:選擇輕量消息隊列(原 MNS)的隊列名稱。當(dāng)目標(biāo)類型選擇的是隊列時需設(shè)置此參數(shù)。

        • 主題:選擇輕量消息隊列(原 MNS)的主題名稱。當(dāng)目標(biāo)類型選擇的是主題時需設(shè)置此參數(shù)。

        消息隊列 RocketMQ 版,當(dāng)目標(biāo)服務(wù)選擇的是消息隊列 RocketMQ 版時,需配置以下參數(shù)信息:

        • 實例:選擇目標(biāo)實例。

        • Topic:選擇目標(biāo)Topic。

        事件總線 EventBridge。當(dāng)目標(biāo)服務(wù)選擇的是事件總線 EventBridge時,需指定自定義事件總線

      3. 單擊部署

    • 配置失敗目標(biāo)

      1. 失敗目標(biāo)區(qū)域,單擊編輯

      2. 失敗目標(biāo)面板,失敗時調(diào)用其他服務(wù)選擇啟用,然后配置當(dāng)函數(shù)執(zhí)行失敗后需要發(fā)送消息的目標(biāo)云服務(wù)。

        配置失敗目標(biāo)的參數(shù),請參見上方配置成功目標(biāo)參數(shù)說明。

      3. 單擊部署

回調(diào)失敗的處理

當(dāng)函數(shù)角色無目標(biāo)服務(wù)訪問權(quán)限或目標(biāo)服務(wù)不可用時,回調(diào)目標(biāo)服務(wù)可能會失敗。函數(shù)計算提供了相關(guān)的指標(biāo)及日志,您可以根據(jù)需要進行相應(yīng)處理。常見的錯誤及系統(tǒng)行為如下所示:

錯誤碼

錯誤原因

系統(tǒng)行為

5xx

限流或內(nèi)容錯誤等。

函數(shù)計算系統(tǒng)內(nèi)部按指數(shù)退避自動重試。初始重試間隔為500毫秒,最大重試時長為30分鐘。

4xx

無權(quán)限、請求參數(shù)不正確(如目標(biāo)服務(wù)的資源已被刪除)或請求消息體超過目標(biāo)服務(wù)限額等。

返回錯誤并記錄錯誤信息。

結(jié)果回調(diào)指標(biāo)

當(dāng)回調(diào)目標(biāo)服務(wù)失敗后,函數(shù)計算會記錄相應(yīng)指標(biāo)并展示到控制臺。您可以登錄函數(shù)計算控制臺,在左側(cè)導(dǎo)航欄選擇高級功能 > 監(jiān)控指標(biāo),然后在函數(shù)名稱列表單擊目標(biāo)函數(shù)名稱,查看函數(shù)維度的指標(biāo)情況。

指標(biāo)名稱

描述

目標(biāo)觸發(fā)失敗(FunctionDestinationErrors)

函數(shù)異步調(diào)用配置Destination時,函數(shù)執(zhí)行中觸發(fā)目標(biāo)失敗的請求數(shù)。按1分鐘或1小時粒度統(tǒng)計求和。

目標(biāo)觸發(fā)成功(FunctionDestinationSucceed)

函數(shù)異步調(diào)用配置Destination時,函數(shù)執(zhí)行中觸發(fā)目標(biāo)成功的請求數(shù)。按1分鐘或1小時粒度統(tǒng)計求和。

更多監(jiān)控指標(biāo),請參見監(jiān)控指標(biāo)

常見問題

如何觸發(fā)函數(shù)的異步調(diào)用?

您可以通過以下方式對函數(shù)計算的函數(shù)發(fā)起一次異步調(diào)用。

后續(xù)操作

如果您希望獲得函數(shù)異步請求各個階段的狀態(tài),可通過開啟任務(wù)模式來實現(xiàn),具體信息,請參見異步任務(wù)