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

配置實(shí)例生命周期

更新時(shí)間:

函數(shù)計(jì)算在處理用戶請(qǐng)求時(shí),自動(dòng)分配一個(gè)或多個(gè)實(shí)例,每個(gè)實(shí)例提供一個(gè)安全和隔離的運(yùn)行時(shí)環(huán)境。傳統(tǒng)應(yīng)用遷移至Serverless架構(gòu)時(shí),由于函數(shù)實(shí)例的創(chuàng)建和銷毀具有瞬態(tài)性,可能導(dǎo)致監(jiān)控?cái)?shù)據(jù)更新不及時(shí)、指標(biāo)數(shù)據(jù)延遲或丟失等問題,為了解決以上痛點(diǎn),函數(shù)計(jì)算基于實(shí)例生命周期增加多種回調(diào)操作,確保監(jiān)控?cái)?shù)據(jù)的實(shí)時(shí)性和完整性。

函數(shù)實(shí)例的生命周期

函數(shù)實(shí)例會(huì)根據(jù)函數(shù)當(dāng)前的請(qǐng)求調(diào)用量動(dòng)態(tài)地按需構(gòu)建與銷毀,每個(gè)函數(shù)實(shí)例的生命周期包括實(shí)例構(gòu)建(Creating)請(qǐng)求調(diào)用(Invoke)實(shí)例銷毀(Destroy)三個(gè)階段,如下圖所示。

image

實(shí)例構(gòu)建(Creating)

實(shí)例構(gòu)建是指函數(shù)計(jì)算根據(jù)您的函數(shù)配置為您創(chuàng)建函數(shù)實(shí)例。在實(shí)例構(gòu)建階段,函數(shù)計(jì)算會(huì)按照順序執(zhí)行以下三項(xiàng)任務(wù):

  1. 實(shí)例創(chuàng)建(Instance Create),包括加載代碼、層加載或拉取鏡像和啟動(dòng)實(shí)例。

  2. 運(yùn)行時(shí)啟動(dòng)(Runtime Init)。

  3. 執(zhí)行函數(shù)配置的Initializer回調(diào)(Init Hook)。更多信息,請(qǐng)參見Initializer回調(diào)

實(shí)例構(gòu)建階段示意圖如下所示。

image

實(shí)例構(gòu)建一般在以下兩種情況下發(fā)生。

  • 彈性擴(kuò)容

    收到調(diào)用請(qǐng)求時(shí),若當(dāng)前的函數(shù)實(shí)例已經(jīng)滿載,會(huì)構(gòu)建新的實(shí)例來處理請(qǐng)求,并立即執(zhí)行實(shí)例構(gòu)建流程,緊接著就會(huì)執(zhí)行請(qǐng)求調(diào)用流程。彈性擴(kuò)容可能會(huì)造成冷啟動(dòng),解決方法請(qǐng)參見函數(shù)計(jì)算冷啟動(dòng)優(yōu)化最佳實(shí)踐

  • 預(yù)留配置調(diào)整

    如果您配置了預(yù)留實(shí)例,對(duì)于這些預(yù)留實(shí)例,函數(shù)計(jì)算立即啟動(dòng)實(shí)例構(gòu)建流程。如果當(dāng)前未收到調(diào)用請(qǐng)求,則后續(xù)的請(qǐng)求調(diào)用流程會(huì)與實(shí)例構(gòu)建流程相隔較長(zhǎng)時(shí)間。更多信息,請(qǐng)參見配置預(yù)留實(shí)例

對(duì)于一個(gè)函數(shù)實(shí)例,函數(shù)配置的Initialize回調(diào)方法只會(huì)執(zhí)行一次,如果執(zhí)行失敗,會(huì)重新啟動(dòng)一個(gè)函數(shù)實(shí)例執(zhí)行Initializer流程,Initializer回調(diào)失敗的實(shí)例會(huì)直接銷毀。

請(qǐng)求調(diào)用(Invoke)

實(shí)例運(yùn)行期間,會(huì)調(diào)用您的函數(shù)處理程序以處理來自內(nèi)外部的函數(shù)調(diào)用請(qǐng)求。在調(diào)用階段,對(duì)于函數(shù)計(jì)算支持的內(nèi)置運(yùn)行時(shí),一個(gè)實(shí)例在同一時(shí)間只會(huì)處理一個(gè)請(qǐng)求;對(duì)于自定義運(yùn)行時(shí)或自定義容器運(yùn)行時(shí),一個(gè)實(shí)例在同一時(shí)間可以處理多個(gè)請(qǐng)求。您可以通過設(shè)置單實(shí)例多并發(fā)實(shí)現(xiàn),具體操作,請(qǐng)參見創(chuàng)建Web函數(shù)

函數(shù)計(jì)算只在實(shí)際請(qǐng)求和回調(diào)程序執(zhí)行時(shí)計(jì)費(fèi),在請(qǐng)求以外的時(shí)間段內(nèi)實(shí)例會(huì)被冷凍,因此不計(jì)費(fèi),詳情請(qǐng)參見計(jì)費(fèi)說明

實(shí)例銷毀(Destroy)

如果函數(shù)實(shí)例在一段時(shí)間內(nèi)沒有收到任何調(diào)用,則觸發(fā)此階段。在銷毀階段,函數(shù)計(jì)算會(huì)先執(zhí)行PreStop回調(diào)方法。您可以在PreStop回調(diào)方法中執(zhí)行一些清理任務(wù)。

實(shí)例銷毀一般在以下三種情況下發(fā)生。

  • 實(shí)例閑置:如果實(shí)例在一段時(shí)間內(nèi)沒有收到任何調(diào)用請(qǐng)求,函數(shù)計(jì)算會(huì)自動(dòng)回收該實(shí)例。

  • 預(yù)留配置調(diào)整:當(dāng)您縮減預(yù)留實(shí)例數(shù)量時(shí),函數(shù)計(jì)算會(huì)立即為您銷毀多余的實(shí)例。

  • 實(shí)例異常:如果實(shí)例在構(gòu)建或運(yùn)行階段出現(xiàn)了異常,函數(shù)計(jì)算會(huì)銷毀該實(shí)例。

實(shí)例凍結(jié)機(jī)制

在沒有調(diào)用請(qǐng)求時(shí),函數(shù)計(jì)算會(huì)將實(shí)例凍結(jié)(Freeze)當(dāng)新的請(qǐng)求來到時(shí),函數(shù)計(jì)算會(huì)將實(shí)例解凍(Thaw)。如下圖所示。

image

實(shí)例凍結(jié)主要發(fā)生在以下兩種情況。

  • 實(shí)例初始化階段完成后,調(diào)用階段前。

  • 函數(shù)某一次調(diào)用階段結(jié)束后,下一次調(diào)用階段前。

在一次調(diào)用階段完成后,函數(shù)計(jì)算將凍結(jié)函數(shù)實(shí)例,程序中的后臺(tái)進(jìn)程、線程或協(xié)程無法繼續(xù)運(yùn)行,異步日志也可能沒有寫入成功。

使用限制

  • 所有運(yùn)行時(shí)均支持Initialize和PreStop回調(diào)方法。

  • PreStop回調(diào)方法的輸入?yún)?shù)沒有event參數(shù)。

  • PreStop回調(diào)函數(shù)無返回值,在函數(shù)末尾增加返回邏輯無效。

  • 如果使用Java Runtime,您需要將fc-java-core更新至1.4.0及以上版本,否則無法使用PreStop擴(kuò)展回調(diào)函數(shù)。

  • 當(dāng)函數(shù)執(zhí)行返回時(shí),函數(shù)計(jì)算將凍結(jié)函數(shù)實(shí)例,用戶不可假設(shè)調(diào)用返回時(shí)所有異步進(jìn)程、線程、協(xié)程等執(zhí)行完成,也不可假設(shè)本次異步寫入的日志被刷新。

計(jì)費(fèi)說明

實(shí)例生命周期回調(diào)方法的請(qǐng)求數(shù)不計(jì)費(fèi),其他費(fèi)用與實(shí)例調(diào)用階段的計(jì)費(fèi)邏輯相同。計(jì)費(fèi)時(shí)長(zhǎng)的統(tǒng)計(jì)如下圖所示。關(guān)于計(jì)費(fèi)方式的具體信息,請(qǐng)參見計(jì)費(fèi)概述

image

前提條件

已完成函數(shù)的創(chuàng)建,具體請(qǐng)參見創(chuàng)建函數(shù)

配置實(shí)例生命周期回調(diào)方法

通過控制臺(tái)配置回調(diào)

當(dāng)您使用控制臺(tái)創(chuàng)建函數(shù)時(shí),函數(shù)計(jì)算不支持配置PreStop回調(diào),您需要在更新函數(shù)時(shí)配置該回調(diào)函數(shù)。

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

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

  3. 在函數(shù)詳情頁,選擇配置頁簽,在左側(cè)導(dǎo)航欄,選擇生命周期,然后單擊編輯

  4. 在編輯生命周期面板,設(shè)置回調(diào)程序和回調(diào)超時(shí)時(shí)間,然后單擊部署

    image.png

    說明

    每一個(gè)擴(kuò)展函數(shù)都需要配置單獨(dú)的回調(diào)程序和超時(shí)時(shí)間,其中回調(diào)程序格式為[文件名].[擴(kuò)展函數(shù)名]。例如在Python Runtime中,創(chuàng)建函數(shù)時(shí)指定的PreStop回調(diào)為index.preStop,那么文件名為index.py,PreStop函數(shù)名為preStop

  5. 配置回調(diào)函數(shù)后,您需要在代碼執(zhí)行中實(shí)現(xiàn)對(duì)應(yīng)的函數(shù)。

    1. 單擊代碼頁簽,在代碼編輯區(qū)域,輸入擴(kuò)展函數(shù)代碼。

      例如,您配置的PreStop回調(diào)程序?yàn)?span data-tag="ph" id="fd10be8735zkm" class="ph">index.preStop,則需要實(shí)現(xiàn)preStop函數(shù)。不同語言運(yùn)行時(shí)實(shí)現(xiàn)函數(shù)實(shí)例生命周期回調(diào)的方法請(qǐng)參見函數(shù)實(shí)例生命周期回調(diào)方法

      說明

      在線IDE支持PHP、Python、Node.js和自定義運(yùn)行時(shí);但不支持Java、Go和.NET這類編譯性語言,以及自定義鏡像。

    2. 單擊代碼編輯器上方的部署代碼,然后單擊測(cè)試函數(shù)

通過Serverless Devs配置回調(diào)

使用Serverless Devs配置PreStop擴(kuò)展函數(shù)時(shí),s.yaml配置文件示例代碼片段如下所示:

  codeUri: './code.zip'
  ......
  instanceLifecycleConfig:
    preStop:
      handler: index.PreStop
      timeout: 60

如果您需要關(guān)閉某個(gè)擴(kuò)展函數(shù),需要將擴(kuò)展函數(shù)的handler參數(shù)顯示置空,否則后端默認(rèn)不更新。例如關(guān)閉PreStop函數(shù),您需要按照以下配置進(jìn)行部署更新,此時(shí)PreStop函數(shù)的timeout參數(shù)已無效。

  codeUri: './code.zip'
  ......
  instanceLifecycleConfig:
    preStop:
      handler: ""
      timeout: 60

不同語言運(yùn)行時(shí)實(shí)現(xiàn)函數(shù)實(shí)例生命周期回調(diào)的方法請(qǐng)參見函數(shù)實(shí)例生命周期回調(diào)方法

通過SDK配置回調(diào)

您可以通過SDK部署和更新擴(kuò)展函數(shù)。本文介紹如何獲取在創(chuàng)建函數(shù)時(shí)配置preStop函數(shù)的SDK示例代碼。

  1. 進(jìn)入CreateFunction - 創(chuàng)建函數(shù)頁面,單擊調(diào)試,進(jìn)入OpenAPI門戶。

  2. 參數(shù)配置頁簽,根據(jù)需要?jiǎng)?chuàng)建函數(shù)的基本信息填寫輸入?yún)?shù)

    image

  3. 參數(shù)配置完成后,單擊SDK 示例頁簽,獲取對(duì)應(yīng)語言的SDK示例代碼。

不同語言運(yùn)行時(shí)實(shí)現(xiàn)函數(shù)實(shí)例生命周期回調(diào)的方法請(qǐng)參見函數(shù)實(shí)例生命周期回調(diào)方法

函數(shù)實(shí)例生命周期回調(diào)方法

函數(shù)計(jì)算中所有運(yùn)行時(shí)均支持Initialize和PreStop兩種回調(diào)方法。運(yùn)行時(shí)實(shí)現(xiàn)函數(shù)實(shí)例生命周期回調(diào)的方法請(qǐng)參考以下內(nèi)容。

運(yùn)行時(shí)

描述

參考文檔

Node.js

通過Node.js實(shí)現(xiàn)并應(yīng)用函數(shù)實(shí)例生命周期回調(diào)方法。

函數(shù)實(shí)例生命周期回調(diào)

Python

通過Python實(shí)現(xiàn)并應(yīng)用函數(shù)實(shí)例生命周期回調(diào)方法。

函數(shù)實(shí)例生命周期回調(diào)

PHP

通過PHP實(shí)現(xiàn)并應(yīng)用函數(shù)實(shí)例生命周期回調(diào)方法。

函數(shù)實(shí)例生命周期回調(diào)

Java

通過Java運(yùn)行時(shí)實(shí)現(xiàn)函數(shù)實(shí)例生命周期回調(diào)的方法。

函數(shù)實(shí)例生命周期回調(diào)

C#

通過C#運(yùn)行時(shí)實(shí)現(xiàn)函數(shù)實(shí)例生命周期回調(diào)的方法。

函數(shù)實(shí)例生命周期回調(diào)

Go

通過Go實(shí)現(xiàn)函數(shù)實(shí)例生命周期回調(diào)的方法。

函數(shù)實(shí)例生命周期回調(diào)

自定義運(yùn)行時(shí)

通過自定義運(yùn)行時(shí)實(shí)現(xiàn)函數(shù)實(shí)例生命周期回調(diào)的方法。

函數(shù)實(shí)例生命周期回調(diào)

自定義鏡像

通過自定義鏡像運(yùn)行時(shí)實(shí)現(xiàn)函數(shù)實(shí)例生命周期回調(diào)的方法。

函數(shù)實(shí)例生命周期回調(diào)

查詢回調(diào)函數(shù)相關(guān)日志

配置函數(shù)實(shí)例生命周期回調(diào)并執(zhí)行代碼實(shí)現(xiàn)對(duì)應(yīng)的回調(diào)函數(shù)后,您可以查詢實(shí)例生命周期回調(diào)函數(shù)的相關(guān)日志。

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

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

  3. 在函數(shù)詳情頁,選擇日志頁簽,然后在調(diào)用請(qǐng)求頁簽,單擊目標(biāo)請(qǐng)求行右側(cè)操作列的高級(jí)日志

    您可以使用復(fù)制的實(shí)例ID,查詢所有生命周期回調(diào)函數(shù)的Start/End日志;還可以使用實(shí)例ID+函數(shù)實(shí)例生命周期回調(diào)關(guān)鍵字查詢指定回調(diào)函數(shù)的Start/End日志,例如,c-62833f38-20f1629801fa4bd***** and PreStopdb_lifecycle_log

    此外,您還可以根據(jù)Start/End日志中的RequestId查詢請(qǐng)求的日志信息。如果用戶日志中沒有RequestId,可以單擊該日志中的db_lifecycle_log_context圖標(biāo)獲取上下文日志。