學AI,好工作 就找北大青鳥
關注小青 聽課做題,輕松學習
周一至周日
4000-9696-28

下一代技術架構之serverless

來源:北大青鳥總部 2023年02月09日 16:31

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

當前在互聯網圈最如火如荼、大家干的熱火朝天、呼聲最高的事情莫過于微服務、上云了。

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

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


什么是serverless?

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

常見的web服務架構如下,由用戶在客戶端發(fā)起一個請求,經過服務器處理,期間調用數據庫等進行數據的存儲與運算,最后返回給客戶端結果,呈現給用戶。



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



在這個結構下我們看到的是一堆函數,已經看不到服務器了,研發(fā)人員只需要關心應用程序本身的邏輯實現和狀態(tài),對于服務器的管理、服務之間的通信等全交由云廠商來完成。這就是serverless無服務器的由來。

serverless是在容器技術(docker)、微服務技術(servermesh)的技術上發(fā)展起來的,強調的是后端服務與服務器函數服務的結合與提供,它有兩大核心技術:BAAS(backendas a service)、FAAS(functionas a service)。


核心技術講解

FAAS函數即服務,即不需要管理服務器系統,不需要自己編寫服務器應用程序,就可以直接運行后端代碼。比如文件存儲、數據存儲、推送服務等,可通過API驅動、郵件驅動、消息隊列驅動。

BAAS后端即服務,即不用編寫、管理服務端軟件(如負載均衡、服務注冊等),使用通用的遠程組件來提供服務。相當于在微服務架構中的常用組件如服務注冊中心eureka、服務網關zuul、服務配置中心zookeeper等的功能全由云廠商打包在一起提供了,不需要開發(fā)者再去維護這些組件與服務之間的調用關系。


使用serveless實現helloworld?

學習任何一門語言的第一課永遠都是helloworld,今天我們在騰訊云提供的云函數上來進行servelss的第一個課—helloworld。注冊登錄騰訊云后,選擇新建函數,輸入名為helloworld的PHP函數,選擇使用模板函數即可。



點擊下一步即可看到整個函數的index.php代碼



點擊運行,即可看到整個函數的執(zhí)行結果、執(zhí)行時間、運行內存、運行時間、整個的執(zhí)行日志。



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

對于一個PHP應用來說,當用戶在前端發(fā)起請求之后,請求會傳遞到web服務器apache或nginx來接收用戶請求,接收用戶請求之后再傳遞給PHP-FGM解析器進行業(yè)務邏輯的處理,獲取結果后生成html數據返回給用戶。



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



在本次helloworld的執(zhí)行代碼中,main_handler函數的傳入參數context便是提供了執(zhí)行環(huán)境的上下文,而event就是驅動的事件。


雖然serverless簡化了整體的開發(fā)流程,但是也會存在一些問題,典型的問題有兩個。

1)調試不方便,因為太多的基礎服務都是云廠商提供的,在本地可能會因為內網限制等原因導致調試不方便,太過于依賴云廠商也導致想做遷移時也不方便。

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


回過頭來看看,技術架構的演變經歷了從早期的單體式架構、SOA架構、微服務架構,再到serverless無服務架構的階段,整個發(fā)展和人類經濟的發(fā)展史也很像。

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

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

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

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

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


標簽: 云計算
熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應用線上班 即將爆滿
UI設計全能班 即將爆滿
數據分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網絡安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓課程 熱門話題 站內鏈接