功能工作量
函式是一種無狀態的程式碼片段,會在被 HTTP 請求呼叫時執行任務。 透過 IBM Code Engine 的各項功能,您可以以可擴展且無伺服器的方式執行您的業務邏輯。 IBM Code Engine 這些函式提供了一個最佳化的執行時環境,以支援低延遲與快速水平擴展的情境。 您的函式程式碼可撰寫於包含特定版本的 Node.js 或 Python 的受管執行環境中。
程式碼組合是代表函數碼的檔案集合。 這個程式碼組合會注入執行時期儲存器中。 您的程式碼組合由 Code Engine 建立,並儲存在儲存器登錄中或與函數一起列入。 程式碼組合不是 Open Container Initiative (OCI) 標準儲存器映像檔。
函數實例的生命週期
當呼叫 (啟動) 函數時,會使用已配置的執行時期儲存器和資源參數來起始設定對應的函數實例。 第一次起始設定的處理程序稱為 冷啟動。
為了減少冷啟動延遲,Code Engine 會透過使用特定 CPU 和記憶體配置預先預熱特定執行時期來最佳化呼叫。 函式的預溫組合包括 Node.js 和 Python 運行時間,以及函式的預設 CPU 和記憶體組合,即 0.25 vCPU x 1 GB 記憶體。 此外,系統設計為改良已起始設定之「函數」實例的重複使用。 因此,在呼叫完成之後,「函數」實例會保持作用中,以容許後續呼叫,方法是重複使用相同的實例,並在前次呼叫完成時重複使用實例的狀態。 不保證重複使用「函數」實例。
使用功能的主要功能為何?
請檢閱下列主題,以進一步瞭解如何使用 IBM Code Engine Functions。
隔離
Code Engine 是租戶共用相同網路及計算基礎架構的多租戶地區服務。 特別是,網路及運算基礎架構是共用資源,且部分管理元件是所有租戶的共用元件。 不過,租戶及其工作量會使用 Code Engine 專案彼此隔離。Code Engine 可防止專案之間的通訊,為多租戶環境內的應用程式提供隔離,其中可以包括應用程式、批次工作及功能。 此外,還有在資源層次上執行的存取控制,只容許授權使用者對專案資源執行特定作業,例如功能或其他 Code Engine 工作量。
如需工作量隔離的相關資訊,請參閱 Code Engine 工作量隔離。
記載
函數程式碼可以寫入捕獲的 stdout 和 stderr 日誌並將其轉送到IBM Cloud Logs實例。IBM Cloud Logs是一個平台日誌記錄實例,您可以將其設定為索引日誌。 如需相關資訊,請參閱檢視日誌。
運行環境
Code Engine 包括可用於「函數」的 受管理執行時期。
受管理執行時期包括 Node.js 和 Python 版本以及特定的 CPU 和記憶體組合。 這些執行時期已針對快速啟動進行最佳化。 這些運行環境會預先預熱,這可避免取回容器映像檔及啟動容器與處理程序的額外負擔。 您的程式碼會注入已在執行中的容器。
如需相關資訊,請參閱 執行時期。
執行功能
無論您的程式碼是以原始碼形式存在於本機檔案中,還是存放於 Git 儲存庫中;抑或是以容器映像檔的形式存在於公開或私有註冊表中,Code Engine 都能為您提供一種簡便的方式,讓您將程式碼作為函式來執行。
您可以使用下列方式在 Code Engine 中建立及呼叫函數:
-
從現有的程式碼組合執行。
-
從現有的原始碼執行。 如果您是從位於 Git 儲存庫或本端工作站上的原始碼開始,則可以指向來源的位置,且 Code Engine 會負責為您建置映像檔。
如需建立及呼叫函數的相關資訊,請參閱 使用 Code Engine中的函數。
安全
Code Engine 為您的函數提供立即的 DDOS 保護。Code Engine的 DDOS 保護由 Cloud Internet Services (CIS) 提供,不需您額外付費。 DDoS 此防護機制可抵禦系統互連(OSI)第 3 層與第 4 層( TCP/IP )的協定攻擊,但不包括第 7 層( HTTP )的攻擊。 請參閱 DDoS 中的防護措施。
Code Engine 此外,它還提供了一種服務網格,用以運用其網路層,該服務網格可讓各函式之間進行相互的傳輸層安全性( TLS )通訊,從而確保服務對服務及使用者對服務的通訊安全。
如需安全的相關資訊,請參閱 Code Engine 和安全。
呼叫並行及調整函數實例
同時呼叫多個函數時,Code Engine 會針對每一個呼叫起始設定新的函數實例,但同時嘗試將重複使用最大化。 函數實例在單一時間點只會處理一個函數呼叫。 對於 Node.js,可以使用 concurrency > 0 來配置函數,以容許在單一函數實例中處理多個呼叫。
包裝函數的原始碼
函數可以用三種不同的方式來包裝。
- 作為單一檔案
- 作為多個檔案 (具有資料夾結構和相依模組)
- 作為容器映像檔
如何開始使用功能?
如果要使用 hello-world 範例映像檔來部署簡式 Code Engine 應用程式,請參閱 執行 IBM Code Engine Functions 指導教學。
若要深入瞭解使用函數,請參閱 使用 Code Engine中的函數。