全部產品
Search
文件中心

Function Compute:HeaderField親和配置

更新時間:Dec 31, 2025

HeaderField親和功能允許通過HTTP要求標頭中的指定欄位實現會話親和,支援用戶端傳入或服務端產生兩種模式,將攜帶相同HeaderField值的請求路由到同一個函數執行個體。

核心配置

在函數配置頁面的進階配置 > 隔離性、親和性中,開啟會話親和開關,選擇HeaderField 親和,配置Header Name(如mySessionId)、單一實例並發 Session 數、會話生命週期配置,點擊部署即可啟用。

用戶端可在要求標頭中攜帶自訂Session ID,或由服務端自動產生並在回應標頭中返回。

適用範圍

  • 通用限制:使用前請先閱讀會話親和通用限制及原理說明

  • 會話 ID 來源

    • 若用戶端在預定義 Header 中傳入會話 ID,則以該值作為會話標識。

      1. 長度限制為 [1,64]

      2. 以字母、數字或底線開頭,後面可跟字母、數字、底線或連字號(-)的字串

    • 若未傳入,服務端將產生全域唯一會話 ID,通過CreateFunction預定義的Header欄位,通過響應 Header 返回。

  • Header 欄位定義:在建立函數時,於 SessionAffinityConfig 中指定用於傳輸會話 ID 的 Header 欄位名。

  • 要求節流

    • 單一實例可同時處理多個Session(預設20個,最大200個),當單一實例下綁定的Session數達到上限時,系統自動建立新執行個體

    • 多個Session共用執行個體的200並發度配額

  • 支援 SessionAPI 管理:可通過 SessionAPI 對會話進行生命週期管理(如建立、更新、查詢、終止等)。

配置HeaderField親和

流程概述

配置HeaderField親和包括四個步驟:開啟會話親和、選擇HeaderField類型、配置Header Name、配置參數並部署。可在建立函數時配置,也可為已有函數補充配置。

開啟會話親和

  1. 登入Function Compute控制台

  2. 進入函數列表,選擇目標函數或建立函數

    建立函數時,可以直接在進階配置地區,找到隔離性、親和性配置項,進行後續配置後建立
  3. 在函數詳情頁面,點擊配置標籤頁

  4. 進階配置地區,找到隔離性、親和性配置項

  5. 點擊隔離性、親和性,展開配置面板

  6. 開啟會話親和開關

選擇HeaderField親和類型

  1. 在會話親和配置地區,選擇HeaderField 親和選項按鈕

  2. 系統自動顯示HeaderField親和的配置選項

配置Header Name

目的:設定用於傳遞Session ID的HTTP要求標頭名稱。

操作步驟

Header Name輸入框中,輸入自訂的Header名稱

  • 命名規範:

    • 不能以x-fc-首碼開頭

    • 以字母開頭

    • 非首字元可包含數字、中劃線、底線、字母

    • 長度5-40個字元

  • 樣本:mySessionIdsession-idcustomSessionId

  • 建議:使用有意義的名稱,便於識別和維護

配置會話參數

目的:設定Session數量、生命週期和空閑時間長度,控制會話綁定和資源使用。

操作步驟

  1. 單一實例並發 Session 數:設定單一實例可同時處理的最大Session數

    • 預設值:20

    • 取值範圍:1-200

    • 建議:測試情境可設定為較小值(如10),生產環境根據業務需求調整

  2. 單個 Session 生命週期:設定Session從建立到銷毀的最長時間長度

    • 預設值:21600秒(6小時)

    • 說明:超過此時間後,系統自動銷毀Session,不再保證親和性

  3. Session Idle時間長度:設定Session空閑多長時間後自動銷毀

    • 預設值:1800秒(30分鐘)

    • 說明:執行個體無請求超過此時間長度,Session進入空閑狀態並自動銷毀

  4. 點擊部署按鈕儲存配置

重要提示

  • 開啟會話親和後,系統會自動將單一實例並發度調整為200(系統預設值,不可手動調整)

  • Header Name配置後不可隨意修改,修改後需要用戶端同步更新

驗證HeaderField親和功能

目的:驗證相同HeaderField值的請求路由到同一執行個體,以及執行個體自動擴容機制。

可以通過在控制台函數詳情頁,查看執行個體擴容變化。

操作步驟

  1. 準備測試環境

    • 確保函數已部署並配置了HeaderField親和(Header Name = mySessionId,單一實例並發 Session 數建議設定為2)

    • 在函數詳情頁,點擊觸發器,擷取函數的HTTP觸發器地址

    • 如果HTTP觸發器使用簽名認證,建議修改為匿名訪問以便測試

  2. 測試服務端產生模式

# 第一次請求,不攜帶Header,服務端會自動產生Session ID
curl -v http://your-function-url/your-path
  • 從回應標頭中提取配置的Header Name的值(服務端產生的Session ID)

  • 記錄響應中的執行個體ID

  1. 驗證同一Session路由到同一執行個體

# 使用提取的Session ID發起後續請求
curl -v -H "mySessionId: <從響應中提取的Session ID>" http://your-function-url/your-path
  • 驗證點:多次請求應該路由到同一個執行個體,在函數詳情頁可以找到執行個體按鈕,是否有新執行個體產生

  1. 測試用戶端傳入模式

# 用戶端主動傳入Session ID
curl -v -H "mySessionId: session-2" http://your-function-url/your-path
  • 驗證點:如果單一實例並發Session數為2,新Session應該綁定到同一執行個體

  1. 驗證執行個體自動擴容

# 用戶端傳入新的Session ID
curl -v -H "mySessionId: session-3" http://your-function-url/your-path
  • 驗證點:當執行個體Session數達到上限時,新Session應該綁定到新建立的執行個體

預期結果

  • 相同HeaderField值的請求路由到同一執行個體

  • 用戶端傳入和服務端產生兩種模式均正常工作

  • 當執行個體Session數達到上限時,系統自動建立新執行個體

常見問題

用戶端傳入和服務端產生模式有什麼區別?

區別

  • 用戶端傳入模式:用戶端主動控制Session ID,適用於需要自訂Session ID的情境

  • 服務端產生模式:服務端自動產生Session ID,用戶端只需提取response欄位,並在後續請求中攜帶此ID,適用於簡化用戶端實現的情境。

選擇建議

  • 需要自訂Session ID或與現有系統整合時,使用用戶端傳入模式

  • 需要簡化用戶端實現時,使用服務端產生模式