這篇文章主要介紹“Serverless的運(yùn)行原理與組件架構(gòu)介紹”,在日常操作中,相信很多人在Serverless的運(yùn)行原理與組件架構(gòu)介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Serverless的運(yùn)行原理與組件架構(gòu)介紹”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、巴宜網(wǎng)站維護(hù)、網(wǎng)站推廣。
本文重點(diǎn)探討下開發(fā)者使用 Serverless 時經(jīng)常遇到的一些問題,以及如何解決
過去一年,我們和大量 Serverless 用戶進(jìn)行了線上和線下的交流,了解大家的業(yè)務(wù)場景、對 Serverless 的看法和使用體驗(yàn)。
大部分用戶認(rèn)為 Serverless 會是云計算下一階段的必然趨勢,但不是現(xiàn)在。為什么呢?因?yàn)闃?gòu)成 Serverless 架構(gòu)的云函數(shù)盡管有引以為傲的自動擴(kuò)縮能力,但是糟糕的開發(fā)體驗(yàn)、讓人畏懼的冷啟動、原有業(yè)務(wù)的改造難題等等,均降低了使用者的信心。
因此,盡管不少用戶認(rèn)可 Serverless 的價值,但依然認(rèn)為其很難承載核心業(yè)務(wù)。
針對這些關(guān)鍵問題,騰訊云在今年 6 月份發(fā)布了 Serverless 2.0,全面升級了產(chǎn)品形態(tài)、系統(tǒng)調(diào)度以及開發(fā)者工具。為了便于大家理解,我們就從云函數(shù)的運(yùn)行原理作為切入點(diǎn),以解釋問題產(chǎn)生的原因以及云函數(shù)的應(yīng)對方法。
如下圖所示,F(xiàn)aaS 不僅給用戶提供了標(biāo)準(zhǔn)的 Runtime,同時在應(yīng)用層也幫用戶管理了請求的調(diào)度。開發(fā)者只需要聚焦在核心業(yè)務(wù)邏輯開發(fā),按照函數(shù)的粒度去編寫代碼。而與底層硬件相關(guān)的資源維護(hù),則交給更加專業(yè)的云廠商來搞定。
因此,對于用戶來講,可以把更多的精力和時間放在業(yè)務(wù)上。而 IaaS 和 PasS,則均需要用戶去運(yùn)維云主機(jī)或者容器集群、搭建業(yè)務(wù)所需的運(yùn)行環(huán)境。
在這里我們也將解答云函數(shù)的冷啟、降低核心業(yè)務(wù)遷移復(fù)雜度等問題。
如下圖所示,開發(fā)者在實(shí)際使用時,可以借助 Web IDE 或者本地 IDE 完成代碼開發(fā),然后通過插件、工具等方式把代碼及其相關(guān)依賴,一起打包部署到云函數(shù)平臺,用戶可以自行選擇部署為函數(shù)形態(tài)或者服務(wù)形態(tài)。
在代碼里,用戶需要自己實(shí)現(xiàn)業(yè)務(wù)邏輯,比如訪問數(shù)據(jù)庫、對象存儲、消息隊列、第三方服務(wù)接口等。計算邏輯和后端服務(wù)共同構(gòu)成了所謂的 Serverless 應(yīng)用架構(gòu)。而終端用戶根據(jù)平臺提供的請求方式,去觸發(fā)部署在云函數(shù)平臺上的業(yè)務(wù)代碼,比如發(fā)送 http 請求,平臺會根據(jù)用戶的請求量去拉起相應(yīng)的計算資源運(yùn)行用戶代碼。
服務(wù)形態(tài)支持直接部署基于框架開發(fā)的核心業(yè)務(wù),如 Node.js 的 express、koa 等框架,不用為了應(yīng)用 Serverless 而拆分成函數(shù)。平臺會幫用戶啟動服務(wù)進(jìn)程、端口監(jiān)聽,同時服務(wù)形態(tài)不會限制業(yè)務(wù)的實(shí)際運(yùn)行時長。
函數(shù)形態(tài)和服務(wù)形態(tài)在收到用戶請求的時候,均能實(shí)現(xiàn)自動擴(kuò)縮。
函數(shù)形態(tài)會針對用戶的每個請求都分配一個運(yùn)行實(shí)例,因此所有請求的執(zhí)行體驗(yàn)是一樣的。當(dāng)沒有請求的時候,平臺是沒有實(shí)例在運(yùn)行的,所以可以做到按需請求,但是這也會造成所謂的冷啟動 —— 即當(dāng)用戶的首次請求進(jìn)入平臺的時候,平臺會臨時拉起資源,而這個過程會消耗一定的時間。為了消除冷啟,云函數(shù)平臺會預(yù)先初始化一批不同規(guī)格的實(shí)例放在資源池中,當(dāng)用戶有請求進(jìn)入時,可以快速從資源池申請一個實(shí)例,直接掛載用戶的代碼運(yùn)行,從而降低了資源申請時間。同時,針對函數(shù)形態(tài),平臺會根據(jù)歷史并發(fā)數(shù)據(jù)進(jìn)行預(yù)測,幫用戶預(yù)留一定量的實(shí)例,這些實(shí)例會預(yù)先分配到用戶的賬號下并且加載好了用戶的代碼,從而不僅直接消除了冷啟,也增加了實(shí)例復(fù)用幾率。
而服務(wù)形態(tài)可以至少幫用戶預(yù)留一個常駐實(shí)例,并且把用戶的所有請求都投遞到首個實(shí)例,根據(jù)實(shí)例的使用情況,自動的動態(tài)擴(kuò)縮。
函數(shù)形態(tài)更適合新建項(xiàng)目,可以敏捷迭代,業(yè)務(wù)按照函數(shù)的粒度開發(fā),不僅可以輕松實(shí)現(xiàn)云上多產(chǎn)品的聯(lián)動,也可以享受函數(shù)的高并發(fā)及性能一致體驗(yàn)。服務(wù)形態(tài)更適合已有項(xiàng)目的遷移、重度復(fù)雜業(yè)務(wù)、需要長時運(yùn)行的業(yè)務(wù)。
如下圖所示,用戶雖然只需要關(guān)注綠色部分和業(yè)務(wù)相關(guān)的代碼實(shí)現(xiàn),但是平臺也需要提供強(qiáng)大的開發(fā)者工具來保障開發(fā)和使用體驗(yàn)。如云函數(shù)推出的 Serverless 本地開發(fā)工具、VS Code 插件,與 CODING 聯(lián)合推出的 Web IDE、DevOps 平臺等,均能很大程度上提升開發(fā)、部署效率,實(shí)現(xiàn)本次開發(fā)、本地調(diào)試、聯(lián)動云端調(diào)試、本地部署、版本發(fā)布等能力。
同時,云函數(shù)也完善了配套的監(jiān)控和告警機(jī)制,提供如調(diào)用次數(shù)、內(nèi)存使用、并發(fā)使用、超時、代碼錯誤等多維度的監(jiān)控和告警能力。這些基礎(chǔ)設(shè)施、資源管理、安全、容災(zāi)等能力,是云函數(shù)平臺必備的基礎(chǔ)能力,也是開發(fā)者關(guān)心的核心能力。
Serverless 不僅僅是計算,還需要不斷完善周邊生態(tài)。
隨著用戶量的增加,Serverless 必然會面臨更多的挑戰(zhàn) —— 怎么幫助用戶組織管理代碼,怎么解決帶狀態(tài)的業(yè)務(wù)訴求,怎么實(shí)現(xiàn)數(shù)據(jù)庫連接數(shù)管理,怎么實(shí)現(xiàn)應(yīng)用級部署等等。我們也在不斷探索和優(yōu)化用戶的使用體驗(yàn),計劃提供諸如 Serverless DB、性能監(jiān)控、日志分析、Serverless 框架、函數(shù)編排、高性能調(diào)用等功能。
到此,關(guān)于“Serverless的運(yùn)行原理與組件架構(gòu)介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!