官术网_书友最值得收藏!

2.1 Serverless架構(gòu)概述

本節(jié)主要介紹Serverless架構(gòu)的組成,并對(duì)Serverless架構(gòu)和傳統(tǒng)服務(wù)架構(gòu)的區(qū)別和對(duì)應(yīng)關(guān)系進(jìn)行分析。

2.1.1 Serverless = FaaS + BaaS

根據(jù)第1章的介紹可知,Serverless包含了FaaS和BaaS兩部分。為了更好地區(qū)分FaaS和BaaS,我們對(duì)構(gòu)建一個(gè)軟件應(yīng)用所需的服務(wù)進(jìn)行分析,如圖2-1所示。

025-1

圖2-1 構(gòu)建應(yīng)用所需的前后端服務(wù)劃分

由圖2-1可知,應(yīng)用的前端服務(wù)更多是用戶可見(jiàn)的,例如應(yīng)用的界面、交互邏輯等,這些主要通過(guò)業(yè)務(wù)實(shí)現(xiàn)的API提供。而用戶無(wú)法看到的后端邏輯部分則更為復(fù)雜,例如數(shù)據(jù)庫(kù)的管理、數(shù)據(jù)的存儲(chǔ)、用戶鑒權(quán)邏輯、應(yīng)用的推送,甚至靜態(tài)資源加速等優(yōu)化能力,都算作后端服務(wù)。這些復(fù)雜的后端邏輯構(gòu)成了用戶前端的體驗(yàn),并且為軟件提供穩(wěn)定、高可用的服務(wù)。

回到FaaS和BaaS的概念區(qū)分,F(xiàn)aaS服務(wù)主要提供了計(jì)算相關(guān)的平臺(tái),用于實(shí)現(xiàn)應(yīng)用的業(yè)務(wù)邏輯;而B(niǎo)aaS服務(wù)則更多側(cè)重冰山底層的能力,例如數(shù)據(jù)庫(kù)服務(wù)、存儲(chǔ)服務(wù)、鑒權(quán)服務(wù)等。圖2-2中對(duì)典型的FaaS服務(wù)和BaaS服務(wù)進(jìn)行了劃分。

025-2

圖2-2 典型的FaaS服務(wù)和BaaS服務(wù)

一個(gè)完整的Serverless應(yīng)用必然是FaaS服務(wù)和BaaS服務(wù)的結(jié)合,此外,該應(yīng)用中所有FaaS服務(wù)和BaaS服務(wù)都是Serverless化的,即擁有彈性擴(kuò)縮容、按需使用和付費(fèi)的特點(diǎn)。

2.1.2 傳統(tǒng)應(yīng)用架構(gòu)分析

在了解Serverless架構(gòu)之前,我們先來(lái)了解,構(gòu)建一個(gè)全棧服務(wù),傳統(tǒng)的架構(gòu)應(yīng)該是怎樣的,如圖2-3所示。

026-1

圖2-3 全棧應(yīng)用架構(gòu)

可以看到,在傳統(tǒng)的服務(wù)架構(gòu)中,需要考慮以下幾個(gè)方面。

  • 整體架構(gòu)的高可用能力:?jiǎn)慰捎脜^(qū)故障時(shí),是否具備容災(zāi)切換的策略。
  • 接入層的性能和安全性:針對(duì)接入層,需要考慮其傳輸性能。例如支持靜態(tài)資源的緩存、負(fù)載均衡、多地域接入加速等。此外,要考慮對(duì)請(qǐng)求進(jìn)行安全加密,并針對(duì)業(yè)務(wù)場(chǎng)景提供用戶鑒權(quán)等能力。
  • 計(jì)算層擴(kuò)縮容:在計(jì)算層,需要保證計(jì)算節(jié)點(diǎn)的資源分配、管理和彈性伸縮能力。例如,通過(guò)配置伸縮組,在突發(fā)流量時(shí)進(jìn)行彈性擴(kuò)縮容。
  • 數(shù)據(jù)庫(kù)層的性能和高可用:在數(shù)據(jù)層面,需要考慮數(shù)據(jù)庫(kù)的主備。為了防止出現(xiàn)過(guò)多連接導(dǎo)致數(shù)據(jù)庫(kù)慢查詢等問(wèn)題,需要針對(duì)數(shù)據(jù)庫(kù)做連接管理,維護(hù)連接池,實(shí)現(xiàn)復(fù)用。

如上所述,實(shí)現(xiàn)一個(gè)完備的應(yīng)用架構(gòu),需要一定的運(yùn)維人力對(duì)架構(gòu)進(jìn)行管理和維護(hù),有較高的學(xué)習(xí)門檻。

2.1.3 典型Serverless應(yīng)用架構(gòu)

與2.1.2節(jié)傳統(tǒng)應(yīng)用架構(gòu)對(duì)應(yīng),典型Serverless架構(gòu)如圖2-4所示。

027-1

圖2-4 典型Serverless應(yīng)用架構(gòu)

因?yàn)楫?dāng)前架構(gòu)全部運(yùn)行在云端的PaaS服務(wù)上,所以架構(gòu)本身的高可用性可以依賴對(duì)應(yīng)的PaaS服務(wù)。進(jìn)一步分析Serverless架構(gòu)可以看出,用戶通過(guò)多種客戶端(Web端、App端、小程序端等)對(duì)服務(wù)進(jìn)行訪問(wèn),發(fā)起請(qǐng)求。

在接入層,通過(guò)網(wǎng)關(guān)服務(wù)對(duì)訪問(wèn)請(qǐng)求進(jìn)行處理,并將請(qǐng)求轉(zhuǎn)發(fā)到后端的Serverless計(jì)算(FaaS)節(jié)點(diǎn)中執(zhí)行業(yè)務(wù)邏輯。在后端,可以連接多種多樣的BaaS服務(wù),例如涉及數(shù)據(jù)增刪改查的業(yè)務(wù),會(huì)在后端連接數(shù)據(jù)庫(kù)、Redis緩存等;如果需要調(diào)用其他服務(wù),可以直接連接第三方API快速實(shí)現(xiàn),如圖片識(shí)別、文字翻譯等;如果需要對(duì)消息進(jìn)行批量處理或再次計(jì)算,可以在后端連接消息隊(duì)列實(shí)現(xiàn)解耦,并再次調(diào)用Serverless計(jì)算(FaaS)節(jié)點(diǎn)。

對(duì)比傳統(tǒng)的服務(wù)架構(gòu)可以看出,Serverless架構(gòu)無(wú)須考慮底層的運(yùn)維和調(diào)度,也不需要關(guān)心后端數(shù)據(jù)層的連接管理、復(fù)用等,為開(kāi)發(fā)者提供了極大的便利,讓其可以專注于業(yè)務(wù)邏輯的實(shí)現(xiàn)。

2.1.4 Serverless架構(gòu)與傳統(tǒng)架構(gòu)

為了進(jìn)行更直觀的對(duì)比說(shuō)明,下面整理了Serverless架構(gòu)和傳統(tǒng)架構(gòu)中服務(wù)的對(duì)應(yīng)關(guān)系,如表2-1所示。

表2-1 Serverless和傳統(tǒng)架構(gòu)中的服務(wù)對(duì)比

028-1

對(duì)比傳統(tǒng)的服務(wù)架構(gòu),Serverless架構(gòu)在成本、運(yùn)維上都有較為顯著的優(yōu)勢(shì),因此也越來(lái)越受企業(yè)和開(kāi)發(fā)者的喜愛(ài)。

主站蜘蛛池模板: 高碑店市| 响水县| 凌源市| 香港 | 固阳县| 开远市| 香河县| 吉安市| 揭东县| 汕头市| 乡城县| 建水县| 奉节县| 芦山县| 神农架林区| 安仁县| 龙川县| 安康市| 扎囊县| 都昌县| 怀柔区| 安多县| 霞浦县| 德惠市| 翁源县| 阿巴嘎旗| 垣曲县| 巴中市| 中阳县| 会泽县| 托克托县| 雅安市| 博客| 家居| 玉山县| 长沙市| 汉中市| 芜湖县| 揭东县| 三亚市| 合山市|