日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
解密函數(shù)計算異步任務(wù)能力之任務(wù)的狀態(tài)及生命周期管理

一、前言

任務(wù)系統(tǒng)中有一類很重要的概念,即任務(wù)的狀態(tài)。其本質(zhì)是對任務(wù)的生命周期管理。細分的狀態(tài)有助于在使用時能夠更清楚的了解系統(tǒng)發(fā)生了什么內(nèi)容,便于針對性的根據(jù)業(yè)務(wù)情況進行操作。函數(shù)計算 Serverless Task 提供了多種可查詢的狀態(tài),并提供了各狀態(tài)間轉(zhuǎn)移的時間點。在函數(shù)的執(zhí)行層面,函數(shù)計算也提供了任務(wù)的生命周期管理概念,用戶可以根據(jù)需求決定當(dāng)系統(tǒng)對任務(wù)實例進行初始化、回收等一系列動作時的執(zhí)行邏輯,實現(xiàn)完整的運行時生命周期管理。本文將分別對任務(wù)運行狀態(tài)及運行時管理這兩個方面的內(nèi)容進行介紹。

二、任務(wù)的狀態(tài)及生命周期的管理

1.任務(wù)的狀態(tài)管理

執(zhí)行狀態(tài)

說明

Enqueued

用戶觸發(fā)的 Task 異步消息已進入內(nèi)部隊列,等待處理。

Dequeued

Task 異步消息已從函數(shù)計算后端服務(wù)出隊,等待觸發(fā)。

Running

Task 調(diào)用執(zhí)行中。

Succeeded

Task 調(diào)用執(zhí)行成功。

Failed

Task 調(diào)用執(zhí)行失敗。

Stopped

Task 調(diào)用因用戶 Cancel 而執(zhí)行終止。

Stopping

Task 調(diào)用因用戶 Cancel ,嘗試停止任務(wù)中。

Expired

您給異步消息配置了有效期,該消息因過期已被丟棄(未觸發(fā))。

Invalid

您的執(zhí)行因函數(shù)或服務(wù)被刪除等原因處于無效狀態(tài)(未觸發(fā))。

Retrying

Task 調(diào)用因執(zhí)行錯誤重試中。

當(dāng)用戶提交任務(wù)并收到提交成功的返回后,任務(wù)便已經(jīng)進入系統(tǒng)對其生命周期的管理流程中。一個任務(wù)的狀態(tài)變更由內(nèi)部的一個狀態(tài)機負責(zé)管理,并對外透出狀態(tài)支持實時查詢。整個狀態(tài)轉(zhuǎn)換圖如下所示:

圖 1

  • 用戶觸發(fā)一次任務(wù)后,任務(wù)入隊,變更為 Enqueued 狀態(tài),并返回觸發(fā)成功;
  • 任務(wù)在函數(shù)計算后端服務(wù)中出隊,任務(wù)變?yōu)?Dequeued 狀態(tài);
  • 后端會檢查任務(wù)配置。如果:

配置了異步消息有效期功能,并且該消息出隊時間與入隊時間之差已超過有效期,則任務(wù)被丟棄,變更為 Expired 狀態(tài)。任務(wù)終止;

任務(wù)對應(yīng)的函數(shù)已被刪除,或創(chuàng)建實例出現(xiàn)錯誤,則丟棄消息,任務(wù)變更為 Invalid 狀態(tài);

  • 檢查后任務(wù)正式進入 Running 狀態(tài)。此時任務(wù)已觸發(fā)實際的執(zhí)行;
  • 任務(wù)執(zhí)行完成后,根據(jù)返回會變更為以下幾個狀態(tài):

Retrying:用戶配置了重試次數(shù)(默認為 3),且任務(wù)執(zhí)行失敗,這時會進入重試中狀態(tài),之后會變更為 Running 狀態(tài);

Failed:任務(wù)執(zhí)行失敗,且超過了重試次數(shù)。此時會將任務(wù)狀態(tài)改為 Failed;

Succeeded:任務(wù)執(zhí)行成功。

  • 如果在整個狀態(tài)流轉(zhuǎn)過程用戶觸發(fā) Cancel,則任務(wù)會先變更為 Stopping 狀態(tài),并嘗試停止任務(wù)執(zhí)行。當(dāng)任務(wù)停止執(zhí)行成功后,任務(wù)進入 Stopped 狀態(tài)。

2.任務(wù)運行時管理及生命周期

當(dāng)任務(wù)狀態(tài)進入 Running 后,任務(wù)的實際執(zhí)行便已交給函數(shù)計算的運行時。在安全性方面,函數(shù)計算會按照 VM 對不同賬號進行隔離,同一個賬號下的函數(shù)可能運行于同一個 VM 中。VM 內(nèi)有一個負責(zé)管理容器的客戶端,來實際觸發(fā)函數(shù)的執(zhí)行,并收集執(zhí)行結(jié)果。用戶的運行實例有幾個不同的狀態(tài):

圖 2

函數(shù)計算對上述所有實例狀態(tài)變化的過程均提供接口,支持用戶側(cè)配置相應(yīng)的邏輯。

  • 創(chuàng)建完成 -> 執(zhí)行請求階段:支持 Initializer 功能,支持初始化實例操作。用戶可以配置諸如全局變量、連接池初始化等相關(guān)操作;
  • 執(zhí)行中 -> 執(zhí)行完成后 Pause 實例:支持 PreFreeze 接口,支持在函數(shù) Pause 實例前執(zhí)行用戶側(cè)的自定義邏輯;
  • 執(zhí)行中 -> 外部 cancel:函數(shù)計算會強制 Restart 用戶實例,在 Restart 前支持 PreStop 接口。用戶可以配置優(yōu)雅停止的相關(guān)邏輯,以便支持 Cancel 時的自定義行為;
  • 完成后 Pause -> 銷毀實例:當(dāng)一段時間沒有請求后,函數(shù)計算將銷毀實例。此時會調(diào)用 PreStop 接口,用戶可以配置銷毀容器的行為(如關(guān)閉連接池等)。

圖 3

3.任務(wù)的停止操作

目前階段函數(shù)計算支持了停止單一任務(wù)的操作。當(dāng)用戶操作停止時,支持配置 PreStop 接口,在停止前進行一系列的資源回收工作。停止操作用戶可以使用 SDK 或控制臺來進行調(diào)用。以 Go 語言為例,停止一次執(zhí)行的偽代碼如下所示:

import fc "github.com/aliyun/fc-go-sdk"


func CancelJob() {
stopInput := fc.NewStopStatefulAsyncInvocationInput("ServiceName", "FunctionName", "TaskUUID")
output, err := fcClient.StopStatefulAsyncInvocation(stopInput)
...
}

三、總結(jié)

Serverless Task 提供了每個任務(wù)的狀態(tài)細節(jié),并會對這些細節(jié)進行實時的持久化。用戶可以根據(jù)需要對這些狀態(tài)信息進行實時的查詢,并根據(jù)執(zhí)行及業(yè)務(wù)情況進行相應(yīng)的操作。在任務(wù)的運行階段,函數(shù)計算提供了所有實例狀態(tài)轉(zhuǎn)移過程中的相關(guān)接口,支持用戶自定義任務(wù)執(zhí)行前后的邏輯。結(jié)合 PreStop 功能及 Cancel 停止任務(wù)功能,用戶可以方便的實現(xiàn)任務(wù)的優(yōu)雅操作。?


網(wǎng)站題目:解密函數(shù)計算異步任務(wù)能力之任務(wù)的狀態(tài)及生命周期管理
URL標(biāo)題:http://www.dlmjj.cn/article/cdiieog.html