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

異步任務(wù)最佳實(shí)踐

更新時(shí)間:

異步任務(wù)可以實(shí)時(shí)感知業(yè)務(wù)狀態(tài)、控制執(zhí)行函數(shù),讓您對(duì)一些異常情況進(jìn)行更好的處理,例如報(bào)警通知、自動(dòng)化重試等。本文介紹如何結(jié)合使用Serverless Devs和函數(shù)計(jì)算控制臺(tái)實(shí)現(xiàn)異步調(diào)用任務(wù)。

背景信息

FaaS早期主要支持無狀態(tài)、短時(shí)和輕量級(jí)的計(jì)算能力,例如API后端、圖片處理和數(shù)據(jù)流式處理等。在各類場(chǎng)景中,對(duì)于FaaS函數(shù)的調(diào)用方式可分為異步調(diào)用和同步調(diào)用。同步調(diào)用和異步調(diào)用存在的差異是同步調(diào)用會(huì)立即執(zhí)行函數(shù),而異步調(diào)用則會(huì)立刻返回調(diào)用方202 HttpCode,并將異步調(diào)用消息入隊(duì),由后端服務(wù)排隊(duì)處理。

使用場(chǎng)景

隨著業(yè)務(wù)的發(fā)展,一些在線直播場(chǎng)景的用戶在慢慢遷移至FaaS內(nèi),這類業(yè)務(wù)場(chǎng)景通常具有執(zhí)行時(shí)間長、對(duì)延時(shí)敏感和可用性要求高等特征,開發(fā)人員需實(shí)時(shí)感知業(yè)務(wù)狀態(tài)和控制函數(shù)的執(zhí)行。由于異步調(diào)用對(duì)延時(shí)不敏感,同步調(diào)用長鏈接的穩(wěn)定性比較差,并且占用客戶端資源,所以既無法使用異步調(diào)用也無法使用同步調(diào)用。但由于異步調(diào)用在大量突增流量的離線業(yè)務(wù)下,具有削峰填谷的特點(diǎn),可以平滑緩沖對(duì)業(yè)務(wù)下游系統(tǒng)的沖擊,所以函數(shù)計(jì)算對(duì)異步調(diào)用進(jìn)行相關(guān)拓展,引入異步任務(wù)。異步任務(wù)主要適用于以下業(yè)務(wù)場(chǎng)景:

  • 對(duì)執(zhí)行具有可觀測(cè)性

    • 在執(zhí)行過程中您可以實(shí)時(shí)查看執(zhí)行的狀態(tài),例如是否已出隊(duì)、是否已觸發(fā)函數(shù)執(zhí)行和執(zhí)行結(jié)果是否已正常發(fā)送Destination目標(biāo)。

    • 業(yè)務(wù)具有明顯的任務(wù)屬性,如下所示:

      • 可以查看某個(gè)執(zhí)行的觸發(fā)事件和實(shí)時(shí)的執(zhí)行日志。

      • 可以根據(jù)執(zhí)行的名稱、執(zhí)行的時(shí)間或執(zhí)行的狀態(tài)等過濾查詢歷史記錄。

  • 對(duì)執(zhí)行具有可操作性

    業(yè)務(wù)具有明顯的任務(wù)屬性,如下所示:

    • 當(dāng)執(zhí)行時(shí)間較長時(shí),在某些情況下可以手動(dòng)停止執(zhí)行函數(shù)。

    • 可以重新執(zhí)行歷史失敗或成功的執(zhí)行。

關(guān)于異步任務(wù)的詳細(xì)信息,請(qǐng)參見異步任務(wù)

準(zhǔn)備工作

  • 快速入門

  • 配置Serverless Devs

  • 創(chuàng)建SMQ隊(duì)列。詳細(xì)信息,請(qǐng)參見創(chuàng)建隊(duì)列

  • 創(chuàng)建RAM角色,并授予以下權(quán)限策略,您也可以直接使用AliyunFCDefaultRolePolicy策略。關(guān)于權(quán)限策略的詳細(xì)信息,請(qǐng)參見創(chuàng)建RAM角色

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "fc:InvokeFunction",
                    "mns:SendMessage",
                    "mns:PublishMessage",
                    "log:*"
                ],
                "Resource": "*",
                "Effect": "Allow"
            }
        ]
    }

操作步驟

您可以通過異步任務(wù)實(shí)現(xiàn)以下效果:

  • 函數(shù)開始異步執(zhí)行后,您可以通過函數(shù)計(jì)算控制臺(tái)、SDK或API查看操作執(zhí)行。

  • 當(dāng)函數(shù)執(zhí)行失敗或手動(dòng)停止后,函數(shù)計(jì)算系統(tǒng)會(huì)將異步消息推送至輕量消息隊(duì)列(原 MNS)的隊(duì)列中實(shí)現(xiàn)死信隊(duì)列的功能,方便您感知異步函數(shù)執(zhí)行失敗的消息并進(jìn)行后續(xù)處理。

  1. 執(zhí)行以下命令,克隆項(xiàng)目工程。

    git clone https://github.com/awesome-fc/Stateful-Async-Invocation.git
  2. 執(zhí)行以下命令,進(jìn)入項(xiàng)目目錄。

    cd Stateful-Async-Invocation
  3. 修改s.yaml文件。

    完整的s.yaml示例代碼如下。實(shí)際使用過程中,需修改{accountid}的值為您的阿里云賬號(hào)ID,修改{myqueue}的值為您配置的異步調(diào)用目標(biāo)輕量消息隊(duì)列(原 MNS)的隊(duì)列名稱。

    edition: 3.0.0
    name: stateful-async-inovcation-demo
    access: default
    resources:
      fc-job:
        component: fc3
        props:
          region: cn-hangzhou
          description: this is test
          handler: index.handler
          memorySize: 128
          runtime: python3
          instanceConcurrency: 1
          timeout: 60
          internetAccess: true
          role: acs:ram::{accountid}:role/aliyunfcdefaultrole
          functionName: my-fc-job
          code: ./code
          asyncInvokeConfig:
            maxAsyncEventAgeInSeconds: 172800
            maxAsyncRetryAttempts: 1
            asyncTask: true
            qualifier: LATEST
            destinationConfig:
              onSuccess:
                destination: acs:mns:cn-hangzhou:{accountid}:/queues/{myqueue}/messages
              onFailure:
                destination: acs:mns:cn-hangzhou:{accountid}:/queues/{myqueue}/messages
  4. 在目標(biāo)目錄中執(zhí)行以下命令部署函數(shù)。

    sudo s deploy

    部署成功后,您可以登錄函數(shù)計(jì)算控制臺(tái),查看是否成功創(chuàng)建函數(shù)并為該函數(shù)開啟異步任務(wù)功能。

結(jié)果驗(yàn)證

  1. 您可以通過Serverless Devs工具異步調(diào)用上一步部署的函數(shù),示例代碼如下。

    sudo s invoke --invocation-type Async -e '{"failure":true}'

    您也可以通過函數(shù)計(jì)算控制臺(tái)查看、操作異步調(diào)用。更多信息,請(qǐng)參見任務(wù)管理

    說明

    如果您需要查看詳細(xì)信息例如函數(shù)日志,您需要為函數(shù)配置日志服務(wù)。詳細(xì)信息,請(qǐng)參見配置日志

  2. 當(dāng)函數(shù)調(diào)用結(jié)束后,如已配置了Destination目標(biāo),則可前往目標(biāo)查看推送記錄。

    本文示例中,配置的Destination目標(biāo)為輕量消息隊(duì)列(原 MNS)的隊(duì)列,您可以在輕量消息隊(duì)列(原MNS)控制臺(tái)接收Destination推送的信息,如下所示。

    {
        "timestamp": 1728465119433,
        "requestContext": {
            "requestId": "1-670648a1-15197d0b-d07710222f9d",
            "functionArn": "acs:fc:cn-hangzhou:1034354682****:functions/my-fc-job",
            "condition": "InvocationError",
            "approximateInvokeCount": 2
        },
        "requestPayload": "{\"failure\":true}",
        "responseContext": {
            "statusCode": 200,
            "functionError": "InvocationError"
        },
        "responsePayload": "{\"errorMessage\":\"Function timed out after 60 seconds (maxMemoryUsage: 8MB)\"}"
    }
    說明

    當(dāng)異步調(diào)用失敗或手動(dòng)終止后,您可以在輕量消息隊(duì)列(原 MNS)中接收到異步調(diào)用的詳細(xì)錯(cuò)誤信息。