如果您使用阿里雲Function Compute(Function Compute,簡稱FC),並需要將Function Compute作為ALB後端服務來處理請求,您可以為ALB執行個體添加Function Compute類型的伺服器組。通過ALB和Function Compute的配置,實現ALB轉寄請求至Function Compute並調用函數,函數在運行完成後,Function Compute將運行結果作為響應返回給請求方。
功能簡介
阿里雲Function Compute是事件驅動的全託管計算服務。通過Function Compute,您無需管理伺服器等基礎設施,只需編寫代碼並上傳。Function Compute會為您準備好計算資源,以彈性、可靠的方式運行您的代碼,並提供日誌查詢、效能監控、警示等功能。藉助Function Compute,您可以快速構建任何類型的應用和服務,並且只需為任務實際消耗的資源付費。
ALB支援將Function Compute添加為後端服務,當接收到訪問請求時,ALB會將請求內容轉寄給Function Compute並觸發函數調用,函數運行完成後,Function Compute將運行結果作為響應返回給請求方。
ALB支援將Function Compute3.0/2.0添加為後端服務。
使用Function Compute服務前需要先開通Function Compute服務。如果您是在2024年08月27日之後註冊阿里雲帳號並完成實名認證,無需開通可直接使用Function Compute產品。
應用型負載平衡ALB與Function ComputeFC之間通過阿里雲內部網路進行安全通訊。
關鍵特性
無伺服器架構支援:ALB添加Function Compute作為後端服務,可輕鬆構建無伺服器應用,減少營運成本。
自動Auto Scaling:Function Compute能夠根據流量自動擴充或縮減計算資源,確保應用在高峰期具備足夠的計算能力,並在低穀時期節約資源。
高可用性和容錯性:ALB和Function Compute共同提供高可用和容災恢複能力,確保應用的穩定運行。
適用情境
微服務情境:通過ALB豐富的進階路由能力,將請求分配到不同的微服務函數中。Function Compute可以動態擴充,處理高並發請求,提高系統的彈性和可靠性。
即時資料處理情境:通過ALB將資料處理請求分配給相應的函數,Function Compute可以用幾行代碼和簡單的配置對資料進行即時處理。
事件驅動情境:ALB接收事件觸發請求,將其轉寄到相應的函數。Function Compute處理事件,並將處理結果儲存到資料庫或發送到其他服務,實現事件驅動的動態處理。
映像和視頻處理情境:ALB接收上傳的映像或視頻請求,將其分配到相應的處理函數進行處理。Function Compute提供彈性計算資源,可以根據任務自動擴充,確保處理任務的高效完成。
使用限制
ALB支援添加Function Compute作為後端服務的地區,請參見ALB掛載Function Compute支援的地區。
ALB執行個體和函數須屬於同一個地區。
ALB的一個Function Compute類型伺服器組僅支援添加一個函數作為後端伺服器。
當Function Compute2.0請求處理常式類型為處理事件請求時,如果使用ALB關聯該類型函數,需要配置HTTP觸發器。
情境樣本
某電子商務企業在阿里雲某地區部署了ALB,以處理其平台上的大量使用者請求。隨著業務的發展和使用者量的增加,企業需要一種靈活、高效的方式來處理動態內容產生、使用者行為分析和個人化推薦等任務。
為瞭解決這一需求,企業選擇了阿里雲的Function Compute服務與ALB結合使用,從而實現了對以上任務的高效處理,顯著提升了使用者體驗。
前提條件
操作步驟
步驟一:建立函數
本文以控制台為Function Compute3.0頁面進行操作。如果您需要使用Function Compute2.0,可單擊右上方返回Function Compute2.0,返回Function Compute2.0頁面建立函數。
在Function Compute控制台的左側導覽列選擇函數,在函數頁面上方選擇目標地區,然後單擊建立函數。
在建立函數頁面,選擇函數類型並完成函數代碼配置,然後單擊建立。
本文以事件函數類型,函數代碼保持預設配置的使用範例程式碼為例,事件函數其他參數配置可保持預設值或根據實際情況修改。


在函數詳情頁的代碼頁簽,單擊測試函數。
執行成功後,您可以在返回結果地區查看函數運行結果,本樣本返回結果為
hello world。
步驟二:建立Function Compute類型的伺服器組
在應用型負載平衡ALB控制台的左側導覽列選擇伺服器組,在頂部功能表列選擇目標地區,單擊建立伺服器組。
在建立伺服器組對話方塊,伺服器群組類型選擇Function Compute類型,然後單擊建立。

在伺服器組建立成功對話方塊單擊添加後端伺服器。
在添加後端伺服器面板,選擇已建立的函數,然後單擊確定。
本文配置方式為通過選擇資源,函數名稱選擇已建立的函數,指定版本為LATEST。如需通過ARN配置,需擷取函數ARN。

步驟三:配置監聽
在左側導覽列,選擇,單擊執行個體ID。
單擊監聽頁簽,然後單擊建立監聽。
在配置監聽設定精靈頁面,完成監聽協議和連接埠配置,然後單擊下一步。
本文使用HTTP協議、80連接埠。HTTP監聽其他參數配置可保持預設值或根據實際情況修改。

在選擇伺服器組設定精靈,在選擇伺服器組的下拉框選擇Function Compute類型,選擇目標伺服器組,然後單擊下一步。

在組態稽核設定精靈,確認配置資訊,單擊提交。
步驟四:佈建網域名解析
實際業務情境中,建議您使用自有網域名稱,通過CNAME解析的方式將自有網域名稱指向ALB執行個體網域名稱。
在左側導覽列,選擇,在執行個體頁面,複製已建立的ALB執行個體的DNS名稱。
執行以下步驟添加CNAME解析記錄。
在網域名稱解析頁面,找到目標自有網域名稱,在操作列單擊解析設定。
說明對於非阿里雲註冊網域名稱,需先添加網域名稱到雲解析控制台,才可以進行網域名稱解析設定。
在解析設定頁面,單擊添加記錄,配置CNAME記錄,然後單擊確定。
本文情境中,記錄類型配置為CNAME,記錄值配置為ALB執行個體的DNS名稱,解析記錄其他參數配置可保持預設值或根據實際情況修改。

步驟五:連通性測試
完成上述操作後,ALB和Function Compute已經建立了串連,您可以開啟命令列視窗,執行curl <自有網域名稱>命令,測試ALB和Function Compute的連通性。
如下圖所示,收到如下所示的回複報文,則表示ALB可以將請求轉寄至Function Compute並調用函數。

常見問題
ALB添加Function Compute為後端服務時,為什麼服務QPS(每秒可處理的請求數)未達到預期?
單個ALB執行個體最大效能可達100萬QPS,但當ALB執行個體後端服務為Function Compute時,通過Function Compute所構建服務的QPS可能無法達到預期,主要原因包括:
Function Compute的單一實例QPS:Function Compute的單個執行個體在同一時刻只能處理一定數量的請求,當業務請求量超過當前執行個體數所能承載的最大QPS時,可能會出現請求排隊或限流的情況。
Function Compute執行個體數上限:執行個體數上限表示同一時刻最多能同時使用的執行個體數。如果執行個體數量不足,即使單一實例QPS較高,也會限制整體QPS。
如何估算實際所需的最大執行個體數,請參見執行個體數上限與服務QPS的關係。
您可以根據實際業務需求,合理配置執行個體並發度、執行個體規格以及其他相關參數,必要時還可以提升執行個體上限,以達到最優的QPS效能上限。
相關文檔
控制台操作文檔
ALB相關資訊:
Function Compute相關資訊:
API文檔
CreateServerGroup:通過配置參數
ServerGroupType為Fc建立Function Compute類型伺服器組。AddServersToServerGroup:通過配置參數
ServerType為Fc添加Function Compute類型後端伺服器。RemoveServersFromServerGroup:通過配置參數
ServerType為Fc,ServerId為Function Compute的ARN,移除伺服器組中的後端伺服器。DeleteServerGroup:刪除指定伺服器組。