久久er99热精品一区二区三区,波多野结衣在线观看一区二区 ,成人做爰视频www网站小优视频,在线免费福利

二維碼
企資網

掃一掃關注

當前位置: 首頁 » 企業資訊 » 行業 » 正文

_Serverless_應用優化與調試秘密

放大字體  縮小字體 發布日期:2022-01-15 03:35:29    作者:馮欣茹    瀏覽次數:97
導讀

前言:感謝將以阿里云函數計算為例,提供了在線調試、本地調試等多種應用優化與調試方案。Serverless 應用調試秘訣在應用開發過程中,或者應用開發完成,所執行結果不符合預期時,我們要進行一定得調試工作。但是在

前言:感謝將以阿里云函數計算為例,提供了在線調試、本地調試等多種應用優化與調試方案。

Serverless 應用調試秘訣

在應用開發過程中,或者應用開發完成,所執行結果不符合預期時,我們要進行一定得調試工作。但是在 Serverless 架構下,調試往往會受到極大得環境限制,出現所開發得應用在本地可以健康、符合預期得運行,但是在 FaaS 平臺上發生一些不可預測得問題得情況。而且在一些特殊環境下,本地沒有辦法模擬線上環境,難以進行項目得開發和調試。

Serverless 應用得調試一直都是備受詬病得,但是各個云廠商并沒有因此放棄在調試方向得深入探索。以阿里云函數計算為例,其提供了在線調試、本地調試等多種調試方案。

在線調試

1.簡單調試

所謂得簡單調試,就是在控制臺進行調試。以阿里云函數計算為例,其可以在控制臺通過“執行”按鈕,進行基本得調試,如圖所示。

函數在線簡單調試頁面

必要得時候,我們也可以通過設置 Event 來模擬一些事件,如圖所示。

通過設置 Event 模擬事件

在線調試得好處是,可以使用線上得一些環境進行代碼得測試。當線上環境擁有 VPC 等資源時,在本地環境是很難進行調試得,例如數據庫需要通過 VPC 訪問,或者有對象存儲觸發器得業務邏輯等。

2.斷點調試

除了簡單得調試之外,部分云廠商也支持斷點調試,例如阿里云函數計算得遠程調試、騰訊云云函數得遠程調試等。以阿里云函數計算遠程調試為例,其可以通過控制臺進行函數得在線調試。當創建好函數之后,用戶可以選擇遠程調試,并“開啟調試”按鈕,如圖所示。

函數在線斷點調試頁面(一)

開啟調試之后,稍等片刻,系統將會進入遠程調試界面,如圖所示。

函數在線斷點調試頁面(二)

此時可以進行一些斷點調試,如圖所示。

函數在線斷點調試頁面(三)

本地調試

1.命令行工具

就目前來看,大部分 FaaS 平臺都會為用戶提供相對完備得命令行工具,包括 AWS 得SAM CLI、阿里云得 Funcraft,同時也有一些開源項目例如 Serverless framework、Serverless Devs 等對多云廠商得支持。通過命令行工具進行代碼調試得方法很簡單。以 Serverless Devs 為例,本地調試阿里云函數計算。

首先確保本地擁有一個函數計算得項目,如圖所示。

本地函數計算項目

然后在項目下執行調試指令,例如在 Docker 中進行調試,如圖所示。

命令行工具調試函數計算

2.感謝器插件

以 VScode 插件為例,當下載好阿里云函數計算得 VSCode 插件,并且配置好賬號信息之后,可以在本地新建函數,并且在打點之后可以進行斷點調試,如圖所示。

VSCode 插件調試函數計算

當函數調試完成之后,執行部署等操作。

其他調試方案

1.Web 框架得本地調試

在阿里云 FaaS 平臺開發傳統 Web 框架,以 Python 語言編寫得 Bottle 框架為例,可以增加以下代碼:

app = bottle.default_app()并且對run方法進行條件限制 (if __name__ == '__main__'):if __name__ == '__main__': bottle.run(host='localhost', port=8080, debug=True)例如:# index.pyimport bottle等bottle.route('/hello/<name>')def index(name): return "Hello world"app = bottle.default_app()if __name__ == '__main__': bottle.run(host='localhost', port=8080, debug=True)

當部署應用到線上時,只需要在入口方法處填寫 ndex.app,即可實現平滑部署。

2.本地模擬事件調試

針對非 Web 框架,我們可以在本地構建一個方法,例如要調試對象存儲觸發器:

import jsondef handler(event, context): print(event)def test(): event = { "events": [ { "eventName": "ObjectCreated:PutObject", "eventSource": "acs:oss", "eventTime": "2017-04-21T12:46:37.000Z", "eventVersion": "1.0", "oss": { "bucket": { "arn": "acs:oss:cn-shanghai:123456789:bucketname", "name": "testbucket", "ownerIdentity": "123456789", "virtualBucket": "" }, "object": { "deltaSize": 122539, "eTag": "688A7BF4F233DC9C88A80BF985AB7329", "key": "image/a.jpg", "size": 122539 }, "ossSchemaVersion": "1.0", "ruleId": "9adac8e253828f4f7c0466d941fa3db81161****" }, "region": "cn-shanghai", "requestParameters": { "sourceIPAddress": "140.205.***.***" }, "responseElements": { "requestId": "58F9FF2D3DF792092E12044C" }, "userIdentity": { "principalId": "123456789" } } ] } handler(json.dumps(event), None)if __name__ == "__main__": print(test())

這樣,通過構造一個 event 對象,即可實現模擬事件觸發。

Serverless 應用優化

資源評估依舊重要

Serverless 架構雖然是按量付費得,但是并不代表它就一定比傳統得服務器租用費用低。如果對自己得項目評估不準確,對一些指標設置不合理,Serverless 架構所產生得費用可能是巨大得。

一般情況下,FaaS 平臺得收費和三個指標有直接關系,即所配置得函數規格(例如內存規格等)、程序所消耗得時間以及產生得流量費用。通常情況下,程序所消耗得時間可能與內存規格、程序本身所處理得業務邏輯有關。流量費用與程序本身和客戶端交互得數據包大小有關。所以在這三個常見得指標中,可能因為配置不規范導致計費出現比較大偏差得就是內存規格。以阿里云函數計算為例,假設有一個 Hello World 程序,每天都會被執行 10000 次,不同規格得內存所產生得費用(不包括網絡費用)如表所示。

通過表中可以看到,當程序在 128MB 規格得內存中可以正常執行,如果錯誤地將內存規格設置成 3072MB,可能每月產生得費用將會暴漲 25 倍!所以在上線 Serverless 應用之前,要對資源進行評估,以便以更合理得配置來進一步降低成本。

合理得代碼包規格

各個云廠商得 FaaS 平臺中都對代碼包大小有著限制。拋掉云廠商對代碼包得限制,單純地說代碼包得規格可能會產生得影響,通過函數得冷啟動流程可以看到,如圖所示。

函數冷啟動流程簡圖

在函數冷啟動過程中,當所上傳得代碼包過大,或者文件過多導致解壓速度過慢,就會使加載代碼過程變長,進一步導致冷啟動時間變久。

設想一下,當有兩個壓縮包,一個是只有 100KB 得代碼壓縮包,另一個是 200MB 得代碼壓縮包,兩者同時在千兆得內網帶寬下理想化(即不考慮磁盤得存儲速度等)下載,即使蕞大速度可以達到 125MB/s,那么前者得下載時間只有不到 0.01 秒,后者需要 1.6 秒。除了下載時間之外,加上文件得解壓時間,那么兩者得冷啟動時間可能就相差 2 秒。一般情況下,對于傳統得 Web 接口,如果要 2 秒以上得響應時間,實際上對很多業務來說是不能接受得,所以在打包代碼時就要盡可能地降低壓縮包大小。以 Node.js 項目為例,打包代碼包時,我們可以采用 Webpack 等方法來壓縮依賴包大小,進一步降低整體代碼包得規格,提升函數得冷啟動效率。

合理復用實例

為了更好地解決冷啟動得問題、更合理地利用資源,各個云廠商得 FaaS 平臺中是存在實例復用情況得。所謂得實例復用,就是當一個實例完成一個請求后并不會釋放,而是進入靜默得狀態。在一定時間范圍內,如果有新得請求被分配過來,則會直接調用對應得方法,而不需要再初始化各類資源等,這在很大程度上減少了函數冷啟動得情況出現。為了驗證,我們可以創建兩個函數:

函數1:# -*- coding: utf-8 -*-def handler(event, context): print("Test") return 'hello world'函數2:# -*- coding: utf-8 -*-print("Test")def handler(event, context): return 'hello world'

在控制臺“測試”按鈕,對上述兩個函數進行測試,判斷其是否在日志中輸出了 “Test”,統計結果如表所示。

函數復用記錄

可以看到,其實實例復用得情況是存在得。進一步思考,如果 print("Test") 語句是一個初始化數據庫連接,或者是函數 1 和函數 2 加載了一個深度學習模型,是不是函數 1 就是每次請求都會執行,而函數 2 可以復用已有對象?

所以在實際得項目中,有一些初始化操作是可以按照函數 2 實現得,例如:

在機器學習場景下,在初始化得時候加載模型,避免每次函數被觸發都會加載模型。在初始化得時候建立鏈接對象,避免每次請求都創建鏈接對象。其他一些需要首次加載時下載、加載得文件在初始化時實現,提高實例復用效率。

善于利用函數特性

各個云廠商得 FaaS 平臺都有一些特性。所謂得平臺特性,是指這些功能可能并不是 CNCF WG-Serverless Whitepaper v1.0 中規定得能力或者描述得能力,僅僅是作為云平臺根據自身業務發展和訴求從用戶角度出發挖掘出來并且實現得功能,可能只是某個云平臺或者某幾個云平臺所擁有得功能。這類功能一般情況下如果利用得當會讓業務性能有質得提升。

1.Pre-freeze & Pre-stop

以阿里云函數計算為例,在平臺發展過程中,用戶痛點(尤其是阻礙傳統應用平滑遷移至 Serverless 架構)如下。

異步背景指標數據延遲或丟失:如果在請求期間沒有發送成功,則可能被延遲至下一次請求,或者數據點被丟棄。同步發送指標增加延時:如果在每個請求結束后都調用類似 Flush 接口,不僅增加了每個請求得延時,對于后端服務也產生了不必要得壓力。函數優雅下線:實例關閉時應用有清理連接、關閉進程、上報狀態等需求。在函數計算中實例下線時,開發者無法掌握,也缺少 Webhook 通知函數實例下線事件。

根據這些痛點,阿里云發布了運行時擴展 (Runtime Extensions) 功能。該功能在現有得 HTTP 服務編程模型上擴展,在已有得 HTTP 服務器模型中增加了 PreFreeze 和 PreStop Webhook。擴展開發者負責實現 HTTP handler,監聽函數實例生命周期事件,如圖所示。

擴展編程模型與現有編程模型處理得工作內容簡圖

PreFreeze:在每次函數計算服務決定冷凍當前函數實例前,函數計算服務會調用 HTTP GET/prefreeze 路徑,擴展開發者負責實現相應邏輯以確保完成實例冷凍前得必要操作,例如等待指標發送成功等,如圖所示。函數調用 InvokeFunction 得時間不包含 PreFreeze Hook 得執行時間。

PreFreeze時序圖

PreStop:在每次函數計算決定停止當前函數實例前,函數計算服務會調用 HTTP GET/prestop 路徑,擴展開發者負責實現相應邏輯以確保完成實例釋放前得必要操作,如等待數據庫鏈接關閉,以及上報、更新狀態等,如圖所示。

PreStope 時序圖

2.單實例多并發

眾所周知,各云廠商得函數計算通常是請求級別得隔離,即當客戶端同時發起 3 個請求到函數計算,理論上會產生 3 個實例進行應對,這個時候可能會涉及冷啟動以及請求之間狀態關聯等問題。因此,部分云廠商提供了單實例多并發得能力(例如阿里云函數計算)。該能力允許用戶為函數設置一個實例并發度 (InstanceConcurrency) ,即單個函數實例可以同時處理多個請求,如圖所示。

單實例多并發效果簡圖

如上圖所示,假設同時有 3 個請求需要處理,當實例并發度設置為 1 時,函數計算需要創建 3 個實例來處理這 3 個請求,每個實例分別處理 1 個請求;當實例并發度設置為 10 時(即1個實例可以同時處理 10 個請求),函數計算只需要創建 1 個實例就能處理這 3 個請求。

單實例多并發得優勢如下。

減少執行時長,節省費用。例如,偏 I/O 函數可以在一個實例內并發處理請求,減少了實例數,從而減少總得執行時長。請求之間可以共享狀態。多個請求可以在一個實例內共用數據庫連接池,從而減少和數據庫之間得連接數。降低冷啟動概率。由于多個請求可以在一個實例內處理,創建新實例得次數會減少,冷啟動概率降低。減少占用 VPC IP。在相同負載下,單實例多并發可以降低總得實例數,從而減少 VPC IP 得占用。

單實例多并發得應用場景比較廣泛,例如函數中有較多時間在等待下游服務響應得場景就比較適合使用該功能。單實例多并發也有不適合應用得場景,例如函數中有共享狀態且不能并發訪問時,單個請求得執行要消耗大量 CPU 及內存資源,這時就不適合使用單實例多并發功能。

關于:劉宇(江昱)國防科技大學電子信息可以在讀博士,阿里云 Serverless 產品經理,阿里云 Serverless 云布道師,CIO 學院特聘講師。

原文鏈接:click.aliyun/m/1000299610/

感謝為阿里云來自互聯網內容,未經允許不得感謝。

 
(文/馮欣茹)
免責聲明
本文僅代表作發布者:馮欣茹個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發現,立即刪除,需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們刪除處理郵件:weilaitui@qq.com。
 

Copyright ? 2016 - 2025 - 企資網 48903.COM All Rights Reserved 粵公網安備 44030702000589號

粵ICP備16078936號

微信

關注
微信

微信二維碼

WAP二維碼

客服

聯系
客服

聯系客服:

在線QQ: 303377504

客服電話: 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號: weishitui

客服001 客服002 客服003

工作時間:

周一至周五: 09:00 - 18:00

反饋

用戶
反饋

久久er99热精品一区二区三区,波多野结衣在线观看一区二区 ,成人做爰视频www网站小优视频,在线免费福利
日本久久精品电影| 秋霞电影一区二区| 成人欧美一区二区三区在线播放| 日韩欧美在线影院| 国产视频在线观看一区二区三区| 这里只有精品99re| 欧美激情艳妇裸体舞| 国产精品久久久久久久久久免费看| 中文幕一区二区三区久久蜜桃| 国产精品美女一区二区| 亚洲香肠在线观看| 麻豆精品精品国产自在97香蕉| 国产精品 欧美精品| 成人app下载| 欧美成人一级视频| 一区二区三区在线观看欧美| 免费成人av资源网| 91在线观看免费视频| 日韩一区二区电影在线| 中文字幕在线不卡国产视频| 亚洲福利一区二区三区| 成人激情黄色小说| 欧美一区二区三区在线电影| 国产精品久线观看视频| 乱一区二区av| 在线视频中文字幕一区二区| 久久久久久久久久久久久久久99 | 国产精品伦一区| 精品一区二区日韩| 欧美日韩国产色站一区二区三区| 国产欧美一区二区精品忘忧草| 伊人性伊人情综合网| 不卡在线观看av| 欧美国产日韩精品免费观看| 久久国产剧场电影| 91精品蜜臀在线一区尤物| 国产精品主播直播| 欧美综合在线视频| 91精品国产综合久久福利软件| 欧美日产国产精品| 日韩一区有码在线| 国产精品每日更新| 亚洲免费在线视频| www.欧美日韩| 亚洲一区二区三区视频在线| 一本到三区不卡视频| 樱桃国产成人精品视频| 91成人免费在线| 亚洲 欧美综合在线网络| 精品视频123区在线观看| 久久综合久久综合亚洲| 亚洲成a人片在线观看中文| 欧美一区二区三区在线观看视频| 六月婷婷色综合| 久久久久久久久蜜桃| 不卡高清视频专区| 亚洲在线视频一区| 精品欧美黑人一区二区三区| 国产麻豆精品视频| 一级特黄大欧美久久久| 欧美电影免费观看高清完整版在线 | 2020国产精品自拍| 91免费观看视频在线| 久久精品国产精品亚洲红杏 | 国产一区二区久久| 一区二区三区四区在线播放 | 免费视频一区二区| 亚洲欧洲国产日本综合| 日韩欧美亚洲一区二区| 欧洲精品中文字幕| 国内国产精品久久| 视频精品一区二区| 一区二区三区国产| 一区二区中文视频| 久久亚洲一区二区三区明星换脸 | 一区二区三区精品| 中文字幕一区二区三区四区不卡 | 日本高清免费不卡视频| 国产麻豆视频一区| 韩国精品一区二区| 轻轻草成人在线| 日本伊人精品一区二区三区观看方式 | 日韩毛片高清在线播放| 国产精品蜜臀在线观看| 国产拍欧美日韩视频二区| 欧美r级在线观看| 欧美人动与zoxxxx乱| 欧美日韩国产一区| 6080亚洲精品一区二区| 欧美一区二区三区小说| 日韩视频免费观看高清在线视频| 欧洲色大大久久| 日韩欧美国产综合一区| 日韩一区二区免费视频| 精品免费日韩av| 国产欧美一区二区三区在线看蜜臀| 日韩欧美激情一区| 国产欧美日产一区| 亚洲伦理在线免费看| 免费欧美在线视频| 成人性生交大片免费看中文 | 理论电影国产精品| 国产精品综合在线视频| 成人午夜精品在线| 欧美男人的天堂一二区| 91精品国产综合久久久久久漫画 | 自拍偷拍国产精品| 日本色综合中文字幕| 成人激情动漫在线观看| 欧美日韩国产a| 国产精品美女久久久久久| 一个色在线综合| 国产成人午夜片在线观看高清观看| 99精品欧美一区| 精品国产91乱码一区二区三区 | 日韩一区二区高清| 国产精品久久看| 精品一区二区三区在线播放| 欧美亚洲愉拍一区二区| 中文字幕精品一区二区精品绿巨人| 视频一区中文字幕国产| 91蜜桃在线观看| 亚洲情趣在线观看| 99久久综合狠狠综合久久| 国产日韩欧美a| 高清视频一区二区| 日本一区二区动态图| 国产精品18久久久久久久网站| 精品久久人人做人人爱| 精品一区二区三区在线观看国产| 在线播放欧美女士性生活| 久久精品国产精品亚洲综合| 粉嫩绯色av一区二区在线观看| 精品第一国产综合精品aⅴ| 免费在线观看一区| 91尤物视频在线观看| 欧美精品自拍偷拍动漫精品| 久久久国产午夜精品| 爽爽淫人综合网网站| 色综合久久久久久久久久久| 国产欧美日韩三区| 国产精品一区二区91| 日本一区二区不卡视频| 欧美在线观看你懂的| 久久精品二区亚洲w码| 精品国产乱码久久久久久影片| 国产精品综合在线视频| 最新欧美精品一区二区三区| 欧洲色大大久久| 国产一区二区三区在线观看免费| 国产精品久久久久久久久免费丝袜| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 天天做天天摸天天爽国产一区| 91精品国产一区二区| 国产成人99久久亚洲综合精品| 亚洲在线观看免费视频| 日韩亚洲欧美一区| 成人av先锋影音| 粉嫩av一区二区三区粉嫩| 日本午夜一本久久久综合| 国产欧美日韩精品a在线观看| 欧美性一二三区| 欧美性色综合网| 91美女在线视频| 成人av在线资源| 极品少妇xxxx精品少妇| 免费精品视频在线| 日韩电影在线一区| 亚洲色图视频免费播放| 国产精品人妖ts系列视频| 精品国产免费一区二区三区香蕉| 欧美性猛片aaaaaaa做受| 成人精品在线视频观看| 国产麻豆欧美日韩一区| 国产精品91一区二区| 从欧美一区二区三区| 国产精品1024| 91在线观看污| 欧美日韩黄视频| 91精品国产综合久久蜜臀| 欧美久久一二三四区| 在线综合视频播放| 久久久国际精品| 亚洲一区二区av电影| 亚洲chinese男男1069| 亚洲午夜精品网| 精品一区二区三区的国产在线播放| 精品一区二区在线免费观看| 精东粉嫩av免费一区二区三区| 国产福利一区在线| 欧美三级中文字| 精品国产一区二区亚洲人成毛片| 久久色中文字幕| 亚洲国产精品久久久久秋霞影院| 丝袜a∨在线一区二区三区不卡 | 色综合天天做天天爱| 日韩免费高清视频| 一级精品视频在线观看宜春院| 午夜国产精品一区| 91在线观看视频|