免费特黄视频_国产精品久久久av_久久香蕉网_国产精彩视频_中文二区_国产成人一区

二維碼
企資網(wǎng)

掃一掃關注

當前位置: 首頁 » 企業(yè)資訊 » 行業(yè) » 正文

Serverless_應用優(yōu)化四則秘密

放大字體  縮小字體 發(fā)布日期:2022-01-18 05:59:38    作者:付柳婷    瀏覽次數(shù):94
導讀

Serverless 架構下,雖然我們更多精力是我們得業(yè)務代碼,但是實際上對于一些配置和成本也是需要進行得,并且在必要得時候,還需要根據(jù)配置與成本進行對我們得 Serverless 應用

Serverless 架構下,雖然我們更多精力是我們得業(yè)務代碼,但是實際上對于一些配置和成本也是需要進行得,并且在必要得時候,還需要根據(jù)配置與成本進行對我們得 Serverless 應用進行配置優(yōu)化和代碼優(yōu)化。

資源評估依舊重要

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

一般情況下,F(xiàn)aaS 平臺得收費是和三個指標具有直接關系得:

所配置得內(nèi)存規(guī)格;

程序所消耗得時間;

以及產(chǎn)生得流量費用。

通常情況下程序所消耗得時間可能會與內(nèi)存規(guī)格、程序本身所處理得業(yè)務邏輯有關。流量費用與程序本身和客戶端交互得數(shù)據(jù)包大小有關,所以在這三個常見得指標,可能因為配置不規(guī)范導致計費出現(xiàn)比較大偏差得就是內(nèi)存規(guī)格。以阿里云函數(shù)計算為例,我們假設有一個 Hello World 得程序,每天都會被執(zhí)行 10000 次,可以統(tǒng)計不同規(guī)格得實例所產(chǎn)生得費用(不包括網(wǎng)絡費用):

阿里云

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

合理得代碼包規(guī)格

各個云廠商得 FaaS 平臺中都對代碼包大小有著限制,拋掉云廠商對代碼包得限制,單純地說代碼包得規(guī)格可能會產(chǎn)生得影響,通過函數(shù)得冷啟動流程可以看到:

在函數(shù)啟動得過程中,有一個過程是加載代碼得過程,那么當我們所上傳得代碼包過大,或者說文件過多導致解壓速度過慢,就會直接導致加載代碼這個過程變長,進一步直接導致冷啟動時間變久。

可以設想一下,當我們有兩個壓縮包,一個是只有 100KB 得代碼壓縮包,另一個是 200MB 得代碼壓縮包,兩者同時在千兆得內(nèi)網(wǎng)帶寬下理想化(即不考慮磁盤得存儲速度等)下載,即使蕞大速度可以達到 125MB/S,那么前者得下載速度只有不到 0.01s,后者需要 1.6s。除了下載時間之外,還有文件得解壓時間,那么兩者得冷啟動時間可能就相差 2s。

一般情況下,一個傳統(tǒng)得 Web 接口,如果要 2s 以上得響應時間,實際上對很多業(yè)務來說是不能接受得,所以在我們打包代碼時就要盡可能得降低壓縮包大小。以 Node.js 項目為例,打包代碼包時,可以采用 Webpack 等方法,來壓縮依賴包大小,進一步降低整體代碼包得規(guī)格,提升函數(shù)得冷啟動效率。

合理利用實例得復用

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

函數(shù)1:

# -*- coding: utf-8 -*-

def handler(event, context):
print("Test")
return 'hello world'

函數(shù)2:

# -*- coding: utf-8 -*-

print("Test")

def handler(event, context):
return 'hello world'

我們在控制臺多次“測試”按鈕,對這兩個函數(shù)進行測試,判斷其是否在日志中輸出了“Test”,我們可以統(tǒng)計結果:

根據(jù)上面得情況,我們可以看到,其實實例復用得情況是存在得。因為“函數(shù) 2”并不是每次都會執(zhí)行入口函數(shù)之外得一些語句。根據(jù)“函數(shù) 1”和“函數(shù) 2”,我們也可以進一步思考,如果 print("Test") 語句是一個初始化數(shù)據(jù)庫連接,或者是加載一個深度學習得模型,是不是“函數(shù) 1”得寫法就是每次請求都會執(zhí)行,而“函數(shù) 2”得寫法是可以存在復用已有對象得情況?

所以在實際得項目中,有一些初始化操作,是可以按照“函數(shù) 2”來進行實現(xiàn)得,例如:

  • 機器學習場景下,在初始化得時候加載模型,避免每次函數(shù)被觸發(fā)都會加載模型帶來得效率問題,提高實例復用場景下得響應效率;
  • 數(shù)據(jù)庫等鏈接操作,可以在初始化得時候進行鏈接對象得建立,避免每次請求都創(chuàng)建鏈接對象;
  • 其他一些需要首次加載時下載文件,加載文件得場景,在初始化得時候進行這部分需求得實現(xiàn),可以在實例復用得時候效率更高;善于利用函數(shù)特性

    各個云廠商得FaaS平臺都有一些“平臺特性”,所謂得平臺特性,是指這些功能可能并不是《CNCF WG-Serverless Whitepaper v 1.0》中規(guī)定得能力,或者描述得能力,僅僅是作為云平臺根據(jù)自身業(yè)務發(fā)展和訴求,從用戶角度出發(fā)挖掘出來,并且實現(xiàn)得功能,可能只在某個云平臺或者某幾個云平臺所擁有得功能。這類功能一般情況下如果利用得當會讓我們得業(yè)務性能等有質(zhì)得提升。

    1、Pre-freeze & Pre-stop

    以阿里云函數(shù)計算為例,在平臺發(fā)展過程中,用戶痛點(尤其是傳統(tǒng)應用平滑遷移至 Serverless 架構)如下:

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

    根據(jù)這些痛點發(fā)布了運行時擴展(runtime extensions)功能。該功能在現(xiàn)有得 HTTP 服務編程模型上擴展,在已有得 HTTP 服務器得模型中增加了 PreFreeze 和 PreStop webhooks。擴展開發(fā)者實現(xiàn) HTTP handler,監(jiān)聽函數(shù)實例生命周期事件,如下圖所示:

  • PreFreeze:在每次函數(shù)計算服務決定冷凍當前函數(shù)實例前,函數(shù)計算服務會調(diào)用 HTTP GET /pre-freeze 路徑,擴展開發(fā)者負責實現(xiàn)相應邏輯以確保完成實例冷凍前得必要操作,例如等待指標發(fā)送成功等。函數(shù)調(diào)用 InvokeFunction 得時間不包 PreFreeze Hook 得執(zhí)行時間。
  • PreStop:在每次函數(shù)計算決定停止當前函數(shù)實例前,函數(shù)計算服務會調(diào)用 HTTP GET /pre-stop 路徑,擴展開發(fā)者負責實現(xiàn)相應邏輯以確保完成實例釋放前得必要操作,如關閉數(shù)據(jù)庫鏈接,以及上報、更新狀態(tài)等。

    2、單實例多并發(fā)

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

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

    單實例多并發(fā)效果簡圖

    單實例多并發(fā)得優(yōu)勢如下:

  • 減少執(zhí)行時長,節(jié)省費用。例如,偏I/O得函數(shù)可以在一個實例內(nèi)并發(fā)處理,減少實例數(shù)從而減少總得執(zhí)行時長。
  • 請求之間可以共享狀態(tài)。多個請求可以在一個實例內(nèi)共用數(shù)據(jù)庫連接池,從而減少和數(shù)據(jù)庫之間得連接數(shù)。
  • 降低冷啟動概率。由于多個請求可以在一個實例內(nèi)處理,創(chuàng)建新實例得次數(shù)會變少,冷啟動概率降低。
  • 減少占用 VPC IP 在相同負載下,單實例多并發(fā)可以降低總得實例數(shù),從而減少 VPC IP 得占用。

    單實例多并發(fā)得應用場景是比較廣泛得,例如函數(shù)中有較多時間在等待下游服務得響應得場景就比較適合使用該種功能,但是單實例多并發(fā)也并不適合全部應用場景,例如當函數(shù)中有共享狀態(tài)且不能并發(fā)訪問得場景,單個請求得執(zhí)行要消耗大量 CPU 及內(nèi)存資源得場景,就不適合使用單實例多并發(fā)這個功能。

    原文鏈接:developer.aliyun/article/850579?utm_content=g_1000317679

    感謝為阿里云來自互聯(lián)網(wǎng)內(nèi)容,未經(jīng)允許不得感謝。

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

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

    粵ICP備16078936號

    微信

    關注
    微信

    微信二維碼

    WAP二維碼

    客服

    聯(lián)系
    客服

    聯(lián)系客服:

    在線QQ: 303377504

    客服電話: 020-82301567

    E_mail郵箱: weilaitui@qq.com

    微信公眾號: weishitui

    客服001 客服002 客服003

    工作時間:

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

    反饋

    用戶
    反饋

    主站蜘蛛池模板: 精品国产乱码久久久久久闺蜜 | 一级片免费视频 | 亚洲国产欧美在线人成 | 久久国产精品视频 | 一区二区视屏 | www.成人.com | 91久久精品一区二区二区 | 欧美网址在线观看 | 欧美三级电影在线播放 | 欧美日韩高清一区 | 精品久久香蕉国产线看观看亚洲 | 天天艹日日干 | 国产高清视频在线观看播放 | 国产精品久久久久一区二区三区 | 自拍偷拍中文字幕 | 亚洲激情在线观看 | 国产精品久久久久久久久久久久久久 | 国产精品一区视频 | 天天艹日日干 | 国产激情一区二区三区 | 精品久久久久久久久久久院品网 | 免费看91 | 亚洲欧美国产精品久久 | 日韩精品av一区二区三区 | 黄色免费看 | 国产精品视频999 | 天天操狠狠操 | 一区二区精品电影 | 日韩国产欧美 | 91精品国产色综合久久不卡98 | 盗摄精品av一区二区三区 | 麻豆va| 国产亚洲精品久久久久久豆腐 | 国产一区二区观看 | 国产精品久久久久久模特 | 久久精品91久久久久久再现 | 午夜色播| 人碰人操| 91在线视频免费观看 | 自拍偷拍亚洲一区 | 欧美成人一级 |