函式計算——應用初探
最近在專案中要使用阿里雲的函式計算功能,所以開始按照說明嘗試本地部署示例服務,並編寫所需功能。參考文件: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應用開發函式
- 函式計算實踐——一個應用案例函式
- Excel函式應用例項:計算保險收益(轉)Excel函式
- Excel函式應用例項:折舊值計算(轉)Excel函式
- Excel函式應用例項:計算客流均衡度(轉)Excel函式
- Excel函式應用例項:計算授課天數(轉)Excel函式
- Excel函式應用例項:計算員工應繳所得稅(轉)Excel函式
- 表示式計算(棧的應用)
- Excel函式應用例項:計算貸款月償還額(轉)Excel函式
- css positioning計算和jquery對應函式CSSjQuery函式
- PHP 匿名函式初探PHP函式
- 計算日期的函式函式
- Excel函式應用例項:計算零存整取未來值(轉)Excel函式
- 從雲端計算到函式計算函式
- 響應式程式設計庫RxJava初探程式設計RxJava
- gethostbyname函式和getservbyname函式的應用函式
- “暈乎乎的概念”:阿里雲函式計算的“應用”又是個啥阿里函式
- Mysql中日期計算函式MySql函式
- 快速遷移 Next.js 應用到函式計算JS函式
- CBO成本計算初探
- Hash函式及其應用函式
- Vue函式式元件的應用Vue函式元件
- 函式柯里化和偏函式應用函式
- 初探快應用
- python用time函式計算程式執行時間Python函式
- 遷移 Express 到函式計算Express函式
- 溫溼度計算露點函式函式
- 【機器學習】SVM核函式的計算機器學習函式
- Microsoft 雲端計算初探薦ROS
- Excel函式應用教程:函式的引數(轉)Excel函式
- 事件匯流排 + 函式計算構建雲上最佳事件驅動架構應用事件函式架構
- Java 函式式介面 lamada 應用Java函式
- Generator函式非同步應用函式非同步
- 大神是怎樣用函式式JavaScript計算陣列平均值的函式JavaScript陣列
- Excel函式應用教程:函式的輸入方法(轉)Excel函式
- Excel函式應用教程:函式與公式的概念(轉)Excel函式公式
- 計算 CRC32 的逆函式函式
- pycuda-一些計算函式函式