Function Compute

為開發人員提供的全託管的無網路服務器執行環境

立即購買 連線銷售

Function Compute

阿里雲Function Compute(Function Compute)是為開發人員提供的全託管的無網路服務器執行環境。通過Function Compute,您無需管理伺服器等基礎設施,只需編寫代碼並上傳。Function Compute會為您準備好計算資源套件括伺服器 CPU、記憶體、網路和其他設定/資源維修、代碼部署、Auto Scaling、負載平衡等。


優點

可靠性

代碼和設定存放在OSS中,自動多重冗餘備份。

可擴充性

毫秒等級即時Auto Scaling和動態負載平衡。

安全性

沙箱執行在阿里雲企業等級安全環境裡。

多租戶執行是伺服器等級隔離機制。

提供多種服務授權和子主帳號來許諾存取安全。

成本

按執行付費,在商務要求波穀期費用低廉。

上行流量免費。

無需運維人員和託管費用。

阿里雲產品內部資料轉送無流量費用。

易用性

內建打通多款阿里雲的產品,產品之間的串連只需要主控台簡單設定就可以使用。

自動調整和負載平衡。

沙箱執行環境,無需設定。

觸發條件簡單,閘道多。


產品詳情

代碼管理

您可以把代碼上傳到Function Compute並執行代碼,Function Compute提供多種代碼管理方式:

通過主控台編輯代碼,這種方式適用於沒有外部依賴的商務代碼,直接在主控台上編輯代碼。

將所有依賴和代碼封裝成ZIP或者jar 包 並上傳至Function Compute,系統會自動抽取閘道函數並執行。

把代碼上傳到物件隱藏(OSS)裡,並在函數中指定代碼所在 Bucket和檔案,系統將自動下載函數代碼並執行。

支援多開發環境

Function Compute支援多種開發環境。目前已支援的語言套件括:Python 2.7 & 3.6、Node.js 6.10、Java 8等,後面會持續發佈新的開發語言環境。

自動調整

Function Compute是毫秒等級的即時Auto Scaling,完全根據要求量擴容或縮容。動態負載平衡將要求分發至後端近乎無限的函數實例上,完全無需任何手動設定和動作,滿足並行量從 0 到成千上萬的不同場景。

活動觸發

支援設定多種觸發程序來決定代碼何時執行,在滿足觸發程序條件(Event)時,代碼自動開始執行,並根據要求自動調度基礎設施資源實現自動調整和回收,提高計算效率。

監控和日誌

Function Compute提供精細的日誌記錄,您可方便地查看函數的健全狀態,並對代碼進行偵錯、測試;支援相關的監控指標上報,說明您快速了解函數的整體執行概況,同時您還可自訂函數執行的監控指標,對函數進行更深入、更廣泛的監控。

商務範本

Function Compute內建了大量商務範本和範例程式碼,您基於函數範本可以快速建立對應的函數服務,如網路爬蟲,影像自動分類,存取阿里雲的物件隱藏OSS,Table Store,Log Service,API Gateway等。

毫秒的計費方式

Function Compute計量最小單位是毫秒,您只需為提供的要求以及執行您的代碼所需的計算時間付費。帳單以 100 毫秒的增量計費,從而能經濟高效且輕鬆地從每天幾個要求自動擴充到每秒數千個要求。

自訂執行資源

Function Compute提供了按照記憶體大小來配置資源,您選擇您想執行的記憶體數量,其他資源按同比例配置 CPU、網路頻寬和磁碟 I/O等。


功能

VPN網關(VPN Gateway)是一款基於Internet,通過加密通道將企業資料中心和阿里雲專有網路(Virtual Private Cloud)安全可靠串連起來的服務。

阿里雲VPN網關支援IPSec加密合約,可滿足絕大多數VPN已連結需求。

注意:阿里雲VPN網關在國家相關原則法規內提供服務,不提供存取Internet功能。

價格

阿里雲Function Compute採用按需付費的方式,費用由以下三部份構成。其中,公網流量費用是可選的,只有您的函數裡使用公網進行資料轉送時,才會產生這部份費用。

計費項說明

總費用 = 叫用次數費用 + 執行時間費用 + 公網流量費用(可選)

每月免費額度

每月的免費額度是子主賬戶共同使用。

叫用次數:每月前100萬次叫用免費。

執行時間:每月前400000GB-秒費用免費。

  • 注意:免費的叫用次數和執行時間不會按月累積,而是在每個自然月起始時刻清零,重新計算。
  • 叫用次數費用

    叫用次數是您所有函數叫用總次數。

    單價:0.2 $/百萬次

    執行時間費用

    執行時間從您的代碼開始執行的時間開始算起到其返回或終止為止,計量的粒度是100毫秒。時間的價格取決於您給函數配置的記憶體量。

    單價: 0.00001667$/GB-秒 ( 0.000001667$/GB-100毫秒)

    公網流量費用

    如果您在Function Compute裡使用了公網進行資料轉送,使用的公網流量將按照阿里雲ECS的公網流量價格進行計費。詳情價格請參考相關文件。

  • 注意:如果您在函數裡使用了其他阿里雲服務,您需要額外付費。例如您通過函數寫入資料到阿里雲物件隱藏(OSS)中,或者開通Log Service存放偵錯資訊等。
  • 每月免費額度速算表

    記憶體(MB) 每個月的免費訂閱秒數
    128 3200000
    192 2133333
    256 1600000
    320 1280000
    384 1066667
    448 914286
    512 800000
    576 711111
    640 640000
    704 581818
    768 533333
    832 492308
    896 457143
    960 426667
    1024 400000
    1088 376471
    1152 355556
    1216 336842
    1280 320000
    1344 304762
    1408 290909
    1472 278261
    1536 266667

    場景

    媒資內容剖析處理場景

    活動觸發機制,便捷構建完整數據處理鏈路 通過物件隱藏上傳活動可以觸發多個函數,完成轉碼、中繼資料抽取等功能。通過活動觸發機制,您能夠快速整合不同服務,構建一個彈性、高可用視訊後端系統。

  • 低成本
  • 彈性、高可用視訊後端系統,並且只為實際消耗的資源付費。

  • 架構靈活
  • 採用散發式系統架構和自主研發高效能快取軟體,穩定高效。

    Severless後端服務

    採用函數服務構建靈活拓展架構

    可以使用 Function Compute和 API Gateway 構建後端,以驗證和處理 API 要求。採用函數服務構建靈活拓展架構,輕鬆創造豐富、個人化的應用程式體驗。

  • 彈性擴充
  • 實現毫秒等級的即時Auto Scaling和動態負載平衡,說明您削峰填穀,從容應對高載存取。

  • 靈活叫用
  • 個雲產品整合的活動觸發機制,銜接諸多場景的計算需求。

    IoT訊息即時處理

    即時資料流,通過Function Compute分類處理寫入後端 您可以使用Function Compute強烈影響處理即時資料流資料。例如,即時遮罩、彙總、剖析IoT裝置產生的資料,並將產生的結構化資料儲存到資料庫中。

    能夠解決

  • 彈性擴充
  • 實現毫秒等級的即時Auto Scaling和動態負載平衡,說明您削峰填穀,從容應對高載存取

  • 靈活叫用
  • 多個雲產品整合的活動觸發機制,銜接諸多場景的計算需求。

    使用入門

    Function Compute是一個活動驅動的全託管計算服務,您編寫代碼上傳到Function Compute,然後通過SDK或者RESTful API來觸發執行函數,同時您也可以通過雲產品的活動來觸發執行函數,例如OSS的ObjectCreated/ObjectRemoved等活動。Function Compute和多款雲產品打通,例如物件隱藏(OSS)、Log Service、API Gateway、Table Store等。

    ① 開發人員編寫代碼,目前支援Java、NodeJS、Python多個組建等語言環境。

    ② 把代碼上傳到Function Compute上,通過API或者SDK上傳,也可以通過主控台網頁上傳上傳,還可以通過命令列工具Fcli上傳。

    ③ 通過API&SDK來觸發Function Compute執行,同樣也可以通過雲產品的事件來源來觸發Function Compute執行。

    ④ Function Compute在執行程序中,會根據用戶請要求量動態擴容Function Compute來許諾要求峰值的執行,這個程序對用戶是透明無感知的。

    ⑤ 函數執行結束後,可以通過帳單來查看執行費用,根據函數的實際執行時間隨用隨付,收費粒度精確到100ms。

    資源

    這些資源可以說明您了解阿里雲 Function Compute 的工作原理。

    以下是相關資源的連結。

    開發人員資源

    通過以下連結,您可以查看進階功能、文件等。這些連結可以說明開發人員將阿里雲 VPN網關 與其現有套用進行整合或改進設定。

    API

    相關服務

    常見問題

    1. 你們只支援Node.js,我用C++寫的程式怎麼執行?

    我們會根據用戶需求不斷拓展支援的語言種類。本期我們支援 Node.js,Python。Java 也會在近期支援。如果您的程式是用我們還未支援的語言實現的,您可以採用以下做法: 看看是否能方便的用我們支援的語言改寫。Node.js,Python 等語言套件含了非常豐富的類庫,開發效率很高。 將 C/C++ 等程式編譯為可執行檔,通過 fork 等系統叫用的方式執行可執行檔。 將 C/C++ 模組編譯為 shared library,在 Python 等語言中通過 binding 的方式叫用。

    2. 現在 docker 這麼火,為什麼你們不支援用戶自訂 docker 鏡像?

    實際上支援用戶自訂鏡像本身不是特別難,難的是支援特別大的自訂鏡像。為了許諾即時伸縮,系統必須在很短的時間內將容器啟動。如果用戶自訂的鏡像特別大,下載鏡像的時間可能就長達幾分鐘,這樣的效能損失很難接受。我們希望您能使用微服務的開發方式,將邏輯解耦,每個函數的功能明確。這樣函數代碼一般不會有特別複雜的依賴,更容易構建。

    3. Function Compute的執行環境中所依賴的包如何自動安裝?

    Function Compute要求您上傳的程式碼封裝中包含了所有的依賴。不同的語言套件管理機制不同,例如在 Node.js 中,您可以使用 npm 將依賴的包安裝到代碼目錄中並封裝上傳。您可以使用我們的命令列工具 fcli 安裝依賴並封裝。具體程序請參考我們的樣本

    4. 如果我程式要產生很大一個檔案,或者需要一個比較大的空間,我什麼地方能申請到?

    您的函數在執行階段有512MB的臨時儲存空間。如果還不夠用,請考慮用流式的方式處理資料,通常這樣會更加高效。這裡是一個樣本,通過流式的方式,將一個函數從原來消耗1G記憶體,執行幾分鐘,優化到消耗256MB記憶體,執行10秒鐘。如果仍然不能解決您的問題,請連線我們

    5. 在程式執行程序中,實際使用了多少記憶體,我從哪些介面能追蹤到?

    函數叫用的返回資訊中會包含最大記憶體消耗等資訊。您也可以從效能監控指標中查看連續一段時間的函數執行資源消耗情況。

    6. 函數可以相互叫用嗎?

    函數可以相互叫用。由於函數可能執行在不同的機器上,所以是通過RPC的方式遠程叫用。您可以使用我們的 Invoke API 呼叫指定函數。

    7. 我的函數如果出現死循環,我怎麼殺掉函數流程?

    死循環可以分為兩種:1) 單個函數執行邏輯出現死循環。2)多個函數叫用出現無限遞迴,無法節流的情況。例如函數 A 叫用 B,B 又叫用 A。情況1比較容易,函數逾時後,系統會自動節流函數,您會收到逾時錯誤,但不會有財務損失。情況2比較麻煩,對系統來說,會認為這種叫用是合法的。此時需要您通過函數等級的指標監控報警。此外,我們在用戶粒度上設定了函數的最大並行度,確保您的費用消耗是可控的。

    8. 你們一個用戶下的最大並行度只有100,所以我構建的服務每秒最多隻能處理100個要求?這也太小了吧。

    每秒處理要求數(qps)和最大並行度有關聯,但二者不是一個概念。您可以用下面的方程式來估計:每秒要求數 * 要求處理時間(秒) = 最大並行度。例如,假設您預期每秒10000個要求,平均每個要求處理時間為1秒,那麼所需的最大並行度為10000;如果平均每個要求處理時間為10毫秒,那麼所需的最大並行度是10000 * 0.01秒 = 100。細節資訊請查閱我們的文件。此外,最大並行度的目的是對用戶的保護,防止用戶的費用失控,例如上面提到的函數相互叫用無限遞迴而無法節流的例子。如果預設的值不夠,您可以連線我們調整成您期望的值。

    9. 我的執行環境是否是硬地安全的?怎麼來保障?

    確保安全是Function Compute最重要的目標。我們在產品和系統設計的每個方面都把安全作為最高優先順序的目標。您的程式在Function Compute環境中啟動並執行隔離保護和阿里雲的ECS是同一等級,即我們是在虛擬機器等級隔離執行,而非容器。此外我們還在網路,資料,代碼,防DDos惡意探索等方面做了完備的保護,確保您的資訊安全。

    10.函數返回後,執行環境也會隨之釋放嗎?我能複用上一次叫用快取的資源/狀態嗎?

    函數執行在容器的環境裡。返回後,容器不會立即釋放。只有在一段時間內(取決於系統的調度演算法,通常在幾分鐘到幾十分鐘),該容器都沒有收到任何要求,才會被釋放。如果有持續的要求,可以認為函數是常駐的。因此,您可以通過全域變數等方式快取資源來優化效能。但是,您的程式正確性不能依賴快取一直可用這個假設。例如,當出現容器/機器宕機等情況,快取的資料就不再有效。

    11.程式執行程序中產生的日誌我如何批量下載?

    如果您的日誌儲存在Log Service的 LogStore 中,您可以通過Log Service的 API 查詢和下載相關內容。

    12.函數叫用正常,為什麼在監控網頁看不到叫用次數等指標?

    請檢查您使用的賬戶是否是子賬戶,是否具備Cloud Monitor的只讀權限。