函式計算——應用初探
最近在專案中要使用阿里雲的函式計算功能,所以開始按照說明嘗試本地部署示例服務,並編寫所需功能。參考文件:https://fc.console.aliyun.com/fc/guide/cn-hangzhou#tool
環境為macos。
按照說明,npm install @serverless-devs/s -g 安裝完成,並且示例程式:image-style-transfer也安裝完畢。
但s deploy執行時報錯:
End the pre-hook
Error: "accountid" must be passed in
Project StyleComponent failed to execute
End of method: deploy
********** The operation was not fully successful **********
> Project Run Error: StyleComponent
Error: Error: "accountid" must be passed in
可以看到提示,是部署過程中缺失accountid導致。 如果是首次執行 s deploy命令,在執行過程中能看到提示在控制檯輸入accountid 和 祕鑰資訊。但我當時沒有注意,敲了多次Enter,導致錯過了輸入的時機。而官方文件也並沒有在示例中給出相應的問題和解決方法。
仔細研讀完整的函式計算相關文件之後,按照一般的函式計算部署方式,我們需要提供一個.env檔案,其中儲存accountid 和 ACCESS_KEY_SECRET等資訊。
關於冷啟動:
所謂冷啟動,是指函式計算被首次呼叫時,需要做一些初始化動作,導致響應耗時較長。回到根本,函式計算是一種彈性擴容的能力支援,讓我們以呼叫遠端方法的方式來執行一些計算邏輯,而不用關心高併發帶來的資源消耗、動態擴容支援、費用等問題。它的實現採用的是k8s+docker方式,初始資源載入包括建立pod、拉取映象等動作,那麼顯然會大於僅僅執行計算邏輯的耗時。
為了解決這個問題,我們採用的是定時執行,類似於保活的策略,來保證容器不會被銷燬。
阿里雲最佳實踐文件:https://help.aliyun.com/document_detail/140338.html?spm=a2c4g.11174283.6.673.20685212lavP6J
文件中,完整的解決思路包括:
- 精簡緊湊的程式碼包: 開發者要儘可能瘦身程式碼包,去掉不必要的依賴。降低 Download/Extract Code 的時間。例如對 Nodejs 函式使用 npm prune, 對 Python 函式使用autoflake,autoremove 去除沒有使用的依賴。另外一些第三方庫中可能會包含測試用例原始碼,無用 binary 和資料檔案。有選擇地刪除無用檔案可以降低函式程式碼下載解壓時間。
- 選擇合適的函式語言: 由於語言理念的差異,Java 執行時冷啟動時間通常要高於其他語言。對於冷啟動延遲敏感的應用。在熱啟動延遲差別不大的情況下,使用 Python 這樣的輕量語言可以大幅降低長尾延遲。
- 選擇合適的記憶體: 在併發量一定的情況下,函式記憶體越大,冷啟動表現越優。
- 降低冷啟動概率:
- 使用定時觸發器預熱函式
- 使用 Initializer 函式入口,函式計算會非同步呼叫初始化介面,消除掉 “User Code Init” 的時間,在函式計算系統升級或者函式更新過程中,使用者對冷啟動無感知。
相關文章
- 函式計算-HelloWorld應用開發函式
- 函式計算實踐——一個應用案例函式
- 阿里雲函式計算 x NVIDIA 加速企業 AI 應用落地阿里函式AI
- 表示式計算(棧的應用)
- PHP 匿名函式初探PHP函式
- “暈乎乎的概念”:阿里雲函式計算的“應用”又是個啥阿里函式
- 快速遷移 Next.js 應用到函式計算JS函式
- 響應式程式設計庫RxJava初探程式設計RxJava
- 函式柯里化和偏函式應用函式
- 從雲端計算到函式計算函式
- Java 函式式介面 lamada 應用Java函式
- Vue函式式元件的應用Vue函式元件
- 初探快應用
- 遷移 Express 到函式計算Express函式
- 溫溼度計算露點函式函式
- 事件匯流排 + 函式計算構建雲上最佳事件驅動架構應用事件函式架構
- Generator函式非同步應用函式非同步
- 函式進階應用3函式
- 尤拉函式的應用函式
- 輕鬆初探 Python 篇(六)— 函式Python函式
- 大神是怎樣用函式式JavaScript計算陣列平均值的函式JavaScript陣列
- pycuda-一些計算函式函式
- 遷移 Spring Boot 到函式計算Spring Boot函式
- 計算 CRC32 的逆函式函式
- 成本節省 50%,9人團隊使用函式計算開發 wolai 線上文件應用函式AI
- 成本節省 50%,10 人團隊使用函式計算開發 wolai 線上文件應用函式AI
- 實驗3 c語言函式應用程式設計C語言函式程式設計
- 實驗3 C語言函式應用程式設計C語言函式程式設計
- day10-函式的應用函式
- pandas.DataFrame.groupby函式應用函式
- 函式響應式程式設計與RxSwift函式程式設計Swift
- 外層函式的變數直接被巢狀函式引用計算函式變數巢狀
- 實驗3_C語言函式應用程式設計C語言函式程式設計
- python-算數運算子對應的函式Python函式
- 函式計算Python連線SQLServer小結函式PythonSQLServer
- 阿里雲 函式計算 域名配置問題阿里函式
- Serverless 實戰 —— 函式計算 + Typescript 實踐Server函式TypeScript
- 函式計算支援 MySQL 例項繫結函式MySql