學(xué)AI,好工作 就找北大青鳥(niǎo)
關(guān)注小青 聽(tīng)課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

下一代技術(shù)架構(gòu)之serverless

來(lái)源:北大青鳥(niǎo)總部 2023年02月09日 16:31

摘要: 現(xiàn)在各大云廠商如AWS、阿里云、騰訊云都在投入重大精力去做serverless(無(wú)服務(wù)器)服務(wù),云計(jì)算正在經(jīng)歷從IAAS—>PAAS—>SAAS—>BAAS&FAAS的過(guò)渡。什么是serverless?今天小編帶大家體驗(yàn)一波新技術(shù)。

當(dāng)前在互聯(lián)網(wǎng)圈最如火如荼、大家干的熱火朝天、呼聲最高的事情莫過(guò)于微服務(wù)、上云了。

傳統(tǒng)的企業(yè)在嘟囔著數(shù)字化轉(zhuǎn)型,要將以前的單體式應(yīng)用進(jìn)行微服務(wù)化,要將自建的數(shù)據(jù)中心遷移到云廠商提供的云服務(wù)上(私有云或混合云)。然而這波未平、下波技術(shù)熱潮又來(lái)了,現(xiàn)在各大云廠商如AWS、阿里云、騰訊云都在投入重大精力去做serverless(無(wú)服務(wù)器)服務(wù),云計(jì)算正在經(jīng)歷從IAAS—>PAAS—>SAAS—>BAAS&FAAS的過(guò)渡。

那么什么是serverless?它的核心技術(shù)包含什么?具體又如何使用呢?今天小編帶大家體驗(yàn)一波新技術(shù)。


什么是serverless?

關(guān)于serverless的定義,目前主要是引用MartinFowler在《serverlessArchitectures》中的定義,即充分與第三方協(xié)同、基于云的服務(wù)與應(yīng)用,serverlesswas first used to describe applications that significantly or fullyincorporate third-party, cloud— hosted applications and services,to manage server-side logic andstate。簡(jiǎn)單一點(diǎn),望文生義,就是無(wú)服務(wù)器。這樣的解釋可能難以理解與消化,那么我們結(jié)合一個(gè)用戶請(qǐng)求如何運(yùn)行的來(lái)給大家講解一下。

常見(jiàn)的web服務(wù)架構(gòu)如下,由用戶在客戶端發(fā)起一個(gè)請(qǐng)求,經(jīng)過(guò)服務(wù)器處理,期間調(diào)用數(shù)據(jù)庫(kù)等進(jìn)行數(shù)據(jù)的存儲(chǔ)與運(yùn)算,最后返回給客戶端結(jié)果,呈現(xiàn)給用戶。



如果我們拆分的再細(xì)一些,客戶端往服務(wù)器發(fā)送請(qǐng)求時(shí),會(huì)需要身份認(rèn)證、安全校驗(yàn)、負(fù)載均衡等,最后才是業(yè)務(wù)函數(shù)進(jìn)行業(yè)務(wù)邏輯的處理,那么上圖就有了新的方式。



在這個(gè)結(jié)構(gòu)下我們看到的是一堆函數(shù),已經(jīng)看不到服務(wù)器了,研發(fā)人員只需要關(guān)心應(yīng)用程序本身的邏輯實(shí)現(xiàn)和狀態(tài),對(duì)于服務(wù)器的管理、服務(wù)之間的通信等全交由云廠商來(lái)完成。這就是serverless無(wú)服務(wù)器的由來(lái)。

serverless是在容器技術(shù)(docker)、微服務(wù)技術(shù)(servermesh)的技術(shù)上發(fā)展起來(lái)的,強(qiáng)調(diào)的是后端服務(wù)與服務(wù)器函數(shù)服務(wù)的結(jié)合與提供,它有兩大核心技術(shù):BAAS(backendas a service)、FAAS(functionas a service)。


核心技術(shù)講解

FAAS函數(shù)即服務(wù),即不需要管理服務(wù)器系統(tǒng),不需要自己編寫(xiě)服務(wù)器應(yīng)用程序,就可以直接運(yùn)行后端代碼。比如文件存儲(chǔ)、數(shù)據(jù)存儲(chǔ)、推送服務(wù)等,可通過(guò)API驅(qū)動(dòng)、郵件驅(qū)動(dòng)、消息隊(duì)列驅(qū)動(dòng)。

BAAS后端即服務(wù),即不用編寫(xiě)、管理服務(wù)端軟件(如負(fù)載均衡、服務(wù)注冊(cè)等),使用通用的遠(yuǎn)程組件來(lái)提供服務(wù)。相當(dāng)于在微服務(wù)架構(gòu)中的常用組件如服務(wù)注冊(cè)中心eureka、服務(wù)網(wǎng)關(guān)zuul、服務(wù)配置中心zookeeper等的功能全由云廠商打包在一起提供了,不需要開(kāi)發(fā)者再去維護(hù)這些組件與服務(wù)之間的調(diào)用關(guān)系。


使用serveless實(shí)現(xiàn)helloworld?

學(xué)習(xí)任何一門(mén)語(yǔ)言的第一課永遠(yuǎn)都是helloworld,今天我們?cè)隍v訊云提供的云函數(shù)上來(lái)進(jìn)行servelss的第一個(gè)課—helloworld。注冊(cè)登錄騰訊云后,選擇新建函數(shù),輸入名為helloworld的PHP函數(shù),選擇使用模板函數(shù)即可。



點(diǎn)擊下一步即可看到整個(gè)函數(shù)的index.php代碼



點(diǎn)擊運(yùn)行,即可看到整個(gè)函數(shù)的執(zhí)行結(jié)果、執(zhí)行時(shí)間、運(yùn)行內(nèi)存、運(yùn)行時(shí)間、整個(gè)的執(zhí)行日志。



在這個(gè)過(guò)程中,除了業(yè)務(wù)代碼hello.world的執(zhí)行之外,其余的事情我們什么都沒(méi)有做,對(duì)不對(duì)?與后端的通信、服務(wù)器資源的管理等全都不用我們管,真正的實(shí)現(xiàn)了無(wú)服務(wù)器。我們也可通過(guò)看時(shí)機(jī)中的PHP函數(shù)是如何運(yùn)行的來(lái)感知serverless的無(wú)服務(wù)器服務(wù)。

對(duì)于一個(gè)PHP應(yīng)用來(lái)說(shuō),當(dāng)用戶在前端發(fā)起請(qǐng)求之后,請(qǐng)求會(huì)傳遞到web服務(wù)器apache或nginx來(lái)接收用戶請(qǐng)求,接收用戶請(qǐng)求之后再傳遞給PHP-FGM解析器進(jìn)行業(yè)務(wù)邏輯的處理,獲取結(jié)果后生成html數(shù)據(jù)返回給用戶。



而采用了serverless服務(wù)之后,對(duì)于服務(wù)器的管理這塊全交由云廠商來(lái)進(jìn)行維護(hù)了,云函數(shù)的執(zhí)行環(huán)境實(shí)例就是Apache/Nginx。



在本次helloworld的執(zhí)行代碼中,main_handler函數(shù)的傳入?yún)?shù)context便是提供了執(zhí)行環(huán)境的上下文,而event就是驅(qū)動(dòng)的事件。


雖然serverless簡(jiǎn)化了整體的開(kāi)發(fā)流程,但是也會(huì)存在一些問(wèn)題,典型的問(wèn)題有兩個(gè)。

1)調(diào)試不方便,因?yàn)樘嗟幕A(chǔ)服務(wù)都是云廠商提供的,在本地可能會(huì)因?yàn)閮?nèi)網(wǎng)限制等原因?qū)е抡{(diào)試不方便,太過(guò)于依賴云廠商也導(dǎo)致想做遷移時(shí)也不方便。

2)冷啟動(dòng),剛剛提到serverless都是事件驅(qū)動(dòng)型的,也就是說(shuō)一般情況下都處于睡眠狀態(tài),啟動(dòng)時(shí)間至少也要幾百毫秒或幾秒。對(duì)于有些業(yè)務(wù)來(lái)說(shuō),是不可忍受的。不過(guò)云廠商也在想辦法解決這些問(wèn)題。


回過(guò)頭來(lái)看看,技術(shù)架構(gòu)的演變經(jīng)歷了從早期的單體式架構(gòu)、SOA架構(gòu)、微服務(wù)架構(gòu),再到serverless無(wú)服務(wù)架構(gòu)的階段,整個(gè)發(fā)展和人類經(jīng)濟(jì)的發(fā)展史也很像。

早期的時(shí)候生存生活的每件事情都自己做,比如小編今年想吃土豆,那必須從春天開(kāi)始耕種,然后施肥、鋤草,再到秋天收獲,存儲(chǔ)糧倉(cāng),到年末時(shí)做成土豆大餐,這和單體式架構(gòu)完全承擔(dān)了應(yīng)用程序的每個(gè)功能是一樣的。

隨著社會(huì)的發(fā)展,小編發(fā)現(xiàn)這樣的模式太累了,想吃玉米或者紅薯了也還得自己去播種耕耘,于是他就和隔壁種玉米的小A、種紅薯的小B商量,等到秋收成熟時(shí),通過(guò)土豆去換他們的玉米、紅薯,到年末時(shí),一頓美味的大餐就做成了,土豆玉米紅薯全都有,這和SOA架構(gòu)的核心原理是一樣的。整個(gè)業(yè)務(wù)拆分成了多個(gè)服務(wù),服務(wù)之間彼此合作,提升了業(yè)務(wù)的可用性和效率。

經(jīng)過(guò)了改革開(kāi)放后,整個(gè)國(guó)家的經(jīng)濟(jì)像火箭一般的發(fā)展,小編也不再滿足于年末的土豆玉米紅薯了,他想吃螃蟹大蝦雞鴨魚(yú)肉,這時(shí)候整個(gè)社會(huì)的分工也開(kāi)始進(jìn)化了,有專門(mén)生產(chǎn)海鮮類,有專門(mén)提供果蔬類,有專門(mén)提供生禽類,這時(shí)候小編的年末大餐就變的豐富了,雞鴨魚(yú)肉海鮮螃蟹全都有了,這和微服務(wù)架構(gòu)把整個(gè)業(yè)務(wù)拆分成多個(gè)服務(wù),每個(gè)服務(wù)由不同的人來(lái)進(jìn)行維護(hù),各自開(kāi)發(fā)迭代是一樣的道理。

在全國(guó)人民的共同努力下,國(guó)家的經(jīng)濟(jì)越來(lái)越好了,互聯(lián)網(wǎng)技術(shù)也發(fā)展的如火如荼,大數(shù)據(jù)、云計(jì)算、人工智能等技術(shù)應(yīng)用在了零售行業(yè),小編年末想要吃大餐時(shí),再也不用把所有的生鮮食材全買回來(lái)自己做了,而是可以到比如盒馬鮮生這樣的新零售店,選擇好了食材之后,只需要應(yīng)用自己的核心技術(shù)來(lái)去烹飪就好了,這就和無(wú)服務(wù)器的核心原理是一樣的,只需要提供運(yùn)行函數(shù),其余的服務(wù)器購(gòu)買維護(hù)升級(jí)都全都不用管。

毫無(wú)疑問(wèn),serverless無(wú)服務(wù)架構(gòu)必將是下一波技術(shù)浪潮,整個(gè)社會(huì)進(jìn)化的目的是為了提供生產(chǎn)生活效率,技術(shù)架構(gòu)的發(fā)展也必將如此,越底層的內(nèi)容就交給專業(yè)的云廠商去做,而開(kāi)發(fā)者們只聚焦于業(yè)務(wù)價(jià)值的實(shí)現(xiàn)即可。


標(biāo)簽: 云計(jì)算
熱門(mén)班型時(shí)間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計(jì)全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開(kāi)發(fā)全能班 爆滿開(kāi)班
網(wǎng)絡(luò)安全運(yùn)營(yíng)班 爆滿開(kāi)班
報(bào)名優(yōu)惠
免費(fèi)試聽(tīng)
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門(mén)話題 站內(nèi)鏈接