<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Serverless特點(diǎn)及應(yīng)用

          共 1881字,需瀏覽 4分鐘

           ·

          2021-09-06 19:59

          Serverless可以看做是運(yùn)行于無(wú)狀態(tài)的容器中,由事件驅(qū)動(dòng),執(zhí)行周期很短的服務(wù),這部分描述和FaaS很像,所以在一部分人眼里Serverless = FaaS。


          馬丁大叔將Serverless與FaaS、BaaS做了一個(gè)結(jié)構(gòu)整理:



          馬丁大叔意思是:

          Serverless = FaaS + BaaS

          Serverless特性包括:彈性伸縮、按需付費(fèi)特點(diǎn)。



          以谷歌開源的Serverless架構(gòu)方案-Knative為例,聊聊FaaS的幾個(gè)特點(diǎn)。


          Knative是構(gòu)建于K8S之上的提供基于事件驅(qū)動(dòng)的Serverless架構(gòu)的標(biāo)準(zhǔn)模式。



          先看下Serverless如何實(shí)現(xiàn)彈性的。


          系統(tǒng)根據(jù)當(dāng)前監(jiān)控到的流量,實(shí)現(xiàn)自動(dòng)擴(kuò)縮容,簡(jiǎn)單的公式如下:

          目標(biāo)實(shí)例數(shù) =  當(dāng)前并發(fā)數(shù) / 單一實(shí)例支持的并發(fā)數(shù)


          如果每個(gè)實(shí)例支持10并發(fā),那當(dāng)100個(gè)并發(fā)來(lái)了,就需要10個(gè)實(shí)例。如果當(dāng)前只有1個(gè)實(shí)例,其余9個(gè)實(shí)例需要擴(kuò)容完成。


          外部請(qǐng)求先緩存在Activator,直到擴(kuò)容完其他9個(gè)實(shí)例,才會(huì)將請(qǐng)求轉(zhuǎn)交給FaaS進(jìn)行請(qǐng)求處理。實(shí)例擴(kuò)容到準(zhǔn)備好這個(gè)階段,就叫做“冷啟動(dòng)”。


          如何提高冷啟動(dòng)速度呢?


          云廠商為減少冷啟動(dòng)時(shí)間,一般會(huì)做一些分配算法,比如:

          實(shí)際擴(kuò)容實(shí)例數(shù) = 1.2 * 期望的實(shí)例數(shù)


          這樣其實(shí)可以支撐120個(gè)并發(fā),減少了一次擴(kuò)容啟動(dòng)時(shí)間。


          上面的實(shí)例擴(kuò)容算法算是一種冷啟動(dòng)優(yōu)化方式,我們看看是否還有其他冷啟動(dòng)優(yōu)化的方式,實(shí)例啟動(dòng)過(guò)程大概是這樣的:

          下載代碼 -> 啟動(dòng)實(shí)例 -> 代碼初始化(依賴加載)-> 函數(shù)執(zhí)行


          不需要擴(kuò)容實(shí)例時(shí),過(guò)程就只剩下了最后一步了,直接函數(shù)執(zhí)行,相對(duì)應(yīng),我們叫做“熱啟動(dòng)”。


          一般“冷啟動(dòng)”時(shí)間需要上百毫秒,“熱啟動(dòng)”只需要幾毫秒。


          所以優(yōu)化冷啟動(dòng),可以從優(yōu)化冷啟動(dòng)時(shí)間和優(yōu)化冷啟動(dòng)概率上解決。


          減少冷啟動(dòng)概率方式有:實(shí)例復(fù)用、實(shí)例預(yù)熱。


          實(shí)例復(fù)用說(shuō)的是,函數(shù)代碼執(zhí)行結(jié)束之后,不會(huì)立馬回收實(shí)例,而是從活躍狀態(tài)變成了等待狀態(tài),處于等待狀態(tài)的實(shí)例可以存活30s,如果期間沒(méi)有請(qǐng)求需要處理,實(shí)例才會(huì)被回收,這樣達(dá)到了30s內(nèi)實(shí)例復(fù)用的目的。


          實(shí)例預(yù)熱方式簡(jiǎn)單來(lái)說(shuō),就是提供預(yù)留實(shí)例不釋放功能,在目標(biāo)擴(kuò)容實(shí)例基礎(chǔ)上增加一定的預(yù)留buffer。


          以上兩種方式對(duì)應(yīng)著實(shí)例成本,需要結(jié)合具體情況具體實(shí)現(xiàn)。


          優(yōu)化啟動(dòng)時(shí)間可以從兩方面入手:優(yōu)化代碼體積、減少不必要的依賴。


          代碼體積越大,下載時(shí)間越長(zhǎng),所以可以考慮代碼打包壓縮,或者在代碼模板中刪除不需要的代碼。


          如何定義一個(gè)函數(shù)的粒度是另一個(gè)使用Serverless需要考慮的地方。


          有的平臺(tái)推薦將整個(gè)web服務(wù)部署在一個(gè)函數(shù)里面,有的是按代碼體積做判斷,有的還需要考慮函數(shù)執(zhí)行時(shí)對(duì)于IO、CPU、內(nèi)存消耗考慮函數(shù)粒度的拆分。


          但以上幾種方式都會(huì)增加研發(fā)成本上升,這也是我懷疑Serverless是否可以帶來(lái)其所承諾的研發(fā)價(jià)值的地方。其有相當(dāng)確定的使用場(chǎng)景,不能簡(jiǎn)單粗暴使用。


          驅(qū)動(dòng)函數(shù)類型的方式有很多,但大部分提倡的還是事件驅(qū)動(dòng)。


          觸發(fā)FaaS運(yùn)行方式都可以抽象成事件類型,比如API網(wǎng)關(guān)事件觸發(fā)。



          那如何使用一個(gè)FaaS服務(wù)呢?


          可以分成如下幾步:

          1.  基于FaaS平臺(tái)選擇一個(gè)熟悉語(yǔ)言對(duì)應(yīng)的Runtime平臺(tái),基于其完成:開發(fā)、測(cè)試過(guò)程。

          2. 代碼完成之后,上傳到FaaS平臺(tái)。

          3. 代碼上傳之后,通過(guò)API/SDK或一些其他事件源觸發(fā)函數(shù)。

          4. FaaS平臺(tái)接收到事件觸發(fā),基于配置并發(fā)度情況,彈性擴(kuò)容并執(zhí)行函數(shù)。

          5. 函數(shù)使用后,按資源使用情況進(jìn)行計(jì)費(fèi)。


          為拉齊函數(shù)編寫與函數(shù)執(zhí)行環(huán)境的差異,F(xiàn)aaS平臺(tái)一般會(huì)提供一些研發(fā)工具。有組件式命令行Devs工具,也有注重運(yùn)維部署方面的Ops工具,提供平臺(tái)觀察函數(shù)生命周期。


          通過(guò)工具,可以快速完成資源管理(代碼編寫、運(yùn)行、下載、創(chuàng)建、上傳)、快速部署、調(diào)試、工程模板、邏輯單元等工作。



          有了一個(gè)個(gè)上傳到云端的函數(shù)了,就可以基于函數(shù)做工作流編排,實(shí)現(xiàn)想要的邏輯控制了。包括任務(wù)跟蹤,狀態(tài)轉(zhuǎn)換,日志查看,監(jiān)控調(diào)試等。

          當(dāng)然還有函數(shù)執(zhí)行之后是可觀測(cè)性(Logging、Metric、Tracing)實(shí)現(xiàn)函數(shù)的運(yùn)維。


          包含用于定位、排查、分析問(wèn)題的工具,評(píng)估風(fēng)險(xiǎn)、配置并發(fā)度等工作。

          以及執(zhí)行的詳細(xì)日志:

          瀏覽 73
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大香蕉伊人丁香五月 | 91原创国产内射 | 国产精品久久77777免费影视 | 欧美啊啊啊啊啊啊啊 | 欧美精品三区 |