備受關(guān)注的Distributed Cloud|2021全球分布式云大會·北京站于4月7日隆重召開,分布式云是2021年全球十大重要戰(zhàn)略科技趨勢,利用分布式架構(gòu)技術(shù)創(chuàng)新,連接邊緣節(jié)點、私有云和公有云的IT資源組成分布式混合云。
全球分布式云聯(lián)盟力求打造分布式云計算旗艦級技術(shù)盛會,本次大會共設有分布式云報告會、邊緣計算論壇、Serverless云原生論壇、分布式數(shù)據(jù)庫論壇、分布式存儲論壇,跨境SD-WAN咨詢會等六大論壇,圍繞分布式云、分布式算力、Serverless、云原生、HTAP、IPFS等技術(shù)與實踐展開。聯(lián)合阿里云、騰訊云、百度云、金山云等全棧技術(shù)引領(lǐng)者與全球分布式云聯(lián)盟攜手打造這場技術(shù)饕餮盛宴。
在4月7日下午舉辦的分布式云報告會上,百度函數(shù)計算平臺業(yè)務負責人 史南勝發(fā)表了題為《百度Serverless架構(gòu)揭秘與應用實踐》的主題演講。
01 為什么引入SERVERLESS
為什么要做Serverless?Serverless能給我們帶來什么?為什么要引入Serverless?我們現(xiàn)在服務化不是做的挺好嗎?PAAS平臺不是也做得挺好嗎?為什么要用Serverless呢?對于所有的場景都適用降本增效一說嗎?史南勝首先站在客戶的角度發(fā)出了一連串的提問。
金融領(lǐng)域、國有企業(yè)這樣的領(lǐng)域,對于資源的利用率上不拘小節(jié),沒有像中小型客戶那樣應用資源非常的謹小慎微,所以對于金融領(lǐng)域,或者說一些對資源利用率要求不至于嚴苛的場景,主要提供人效開發(fā),讓開發(fā)成本降低。對于中小型客戶,尤其是兩三個人創(chuàng)業(yè)的場景,比如小程序的開發(fā)者,需要考慮到他們推向產(chǎn)品的市場的時間,以及業(yè)務布局的快速度,推薦他走Serverless的場景,這樣的場景可以快速的提高他的開發(fā)速度,以及降低運維的成本。
哪些場景合適,哪些場景不合適呢?史南勝表示,Serverless并不是解決方案,并不能短期內(nèi)替代掉服務化,或者微服務化的技術(shù),它也是在服務化或微服務化發(fā)展到一定程度以后,基于容器計算的新技術(shù)。經(jīng)常有客戶問,我們怎么從一個單邊應用,或者從一個微服務架構(gòu)應用遷移到Serverless場景呢?并不是每個場景都能夠遷移的。所以說需要區(qū)分一些場景,將一些合適的場景我們?nèi)ヌ剿鳌?/p>
史南勝分成三個部分解析這一問題:第一,事件的觸發(fā)處理。第二,數(shù)據(jù)處理計算。第三,應用后端服務。
在探索和應用的場景里面主要包含像實時文件處理、圖片裁剪添加水印,這種場景為什么適合呢?不是時時刻刻都有用戶在上傳圖片,或者不是時時刻刻都有這樣的事件在處理,這樣的場景是否通過函數(shù)計算和Serverless場景去解決?還有數(shù)據(jù)計算場景,比如說像物聯(lián)網(wǎng)網(wǎng)關(guān)和P2P里面的計算等,應用后端服務現(xiàn)在大規(guī)模使用的是智能小程序的開發(fā),讓他們通過Serverless的場景快速將自己的技能通過函數(shù)計算平臺能夠快速的開發(fā)、上線,將產(chǎn)品推向市場,產(chǎn)生收益。這樣的技能又可以在小度音箱上面去產(chǎn)生售賣和調(diào)用,在調(diào)用支付的時候會給創(chuàng)業(yè)者帶來一定的收益。
哪些場景不太適合呢?像延遲敏感高,對于穩(wěn)定性級別很高的像交易場景、支付場景,還有檢索場景,不太推薦目前在現(xiàn)有的發(fā)展技術(shù)下去使用Serverless和函數(shù)計算的場景。
那么對于隱私這樣的場景適合用Serverless的架構(gòu)方案去解決嗎?在這里通過相應的實踐和證明,隱私不是考量Serverless架構(gòu)合適和不合適的一個很重要的因素,因為在任何的場景下都會去確??蛻舻碾[私和數(shù)據(jù)(安全)問題。對于隱私高的場景,比如像金融領(lǐng)域我們都會去做私有化的部署。
現(xiàn)在看Serverless從廣義角度來講,按功能分為FAAS和BAAS上面,常見的可以看到大家老生常談的相對來說是比較狹義的概念,這樣狹義的概念指的是FAAS上面,就是關(guān)注于業(yè)務場景的邏輯處理。而對于底層的存儲、緩存和對象級別的存儲來說,會依托于云上面的資源,或者本身自己的一些傳統(tǒng)在微服務化下面的存儲來去處理。
如果要做到真正的Serverless的架構(gòu)方案,需要將FAAS和BAAS同時支持,這樣支持以后才能真正做到高彈性、高可擴容/可伸縮的優(yōu)勢,才能真正做到降本增效,不然的話FAAS流量上來以后,后臺的BAAS技術(shù)如果跟不上,這樣的彈性擴縮容是需要受到挑戰(zhàn)的。但是今天史南勝主要從狹義的場景來介紹FAAS的基礎,通常講Serverless場景的時候指的是函數(shù)計算。
02 百度的Serverless場景解決方案
百度提供了四個終端產(chǎn)品級的計算,為了滿足客戶和開發(fā)者,或者以及百度內(nèi)部集團所使用的一些場景,包含CFC,在公有云上面面向中小客戶,包括大型客戶的部分場景;CFC-Stack主要在私有化領(lǐng)域?qū)S性瓢娼y(tǒng)一的技術(shù)棧解決方案;CFC邊緣計算的場景,主要面向的是用戶在加載比較快,對地域要求比較高的一些場景;EasyFaaS是百度的開源產(chǎn)品,這個開源產(chǎn)品是昨天(4月6日)夜里12點鐘的時候正好百度審批通過,在百度上有開源源代碼,包含了百度在函數(shù)計算領(lǐng)域里面的核心引擎的代碼部分,歡迎大家也可以跟我們一起共建。第五個解決方案是CBD,這是基于小程序,或者一站式的產(chǎn)品解決方案,可以支持開發(fā)者在小程序上面進行云開發(fā)、云調(diào)用和云存儲。
百度經(jīng)過數(shù)年的打磨,在私有化和公有化領(lǐng)域里面,將開源和公有、私有,以及面向百度其他內(nèi)部云支持的產(chǎn)品打磨成統(tǒng)一的公共的底層函數(shù)服務支持,這個能夠滿足整個函數(shù)計算的編寫、上線、開發(fā)和運營,在大部分場景下能夠提供相應的技術(shù)支持,并且百度還開發(fā)相應的工作鏈,提供了相應的SDK和插件,以及運行時能夠供定制化的業(yè)務團隊做二次開發(fā)。
史南勝對百度函數(shù)計算的整體架構(gòu)進行了介紹,基于整個云端實踐進行觸發(fā),整個函數(shù)計算的觸發(fā)場景包含很多種,此處列舉了6種,包括CDN、BOS、消息通知的觸發(fā),以及小度技能的觸發(fā),這些技能觸發(fā)器都可以以同步或者異步的方式調(diào)用函數(shù)計算,這樣的函數(shù)計算遵循CFC的租賃格式,而且跟AWS進行對標沒有障礙。如果有客戶在AWS上面去做的函數(shù)計算,也可以很方便的去做遷移和使用。右側(cè)部分的配置服務,配置服務是離線管控模塊,這組模塊用來可以支撐代碼的管控、包的上傳,以及包括相應的原數(shù)據(jù)的管理。
函數(shù)的觸發(fā)服務是我們的一個關(guān)鍵錄用模塊,用來監(jiān)聽事件的請求、權(quán)限的管理、資源的調(diào)度申請、路由等等,資源的調(diào)度服務用來管控整個函數(shù)的運行資源池,函數(shù)的整個運行資源池是我們第二大核心部分,函數(shù)運行引擎就是剛才的開源重要的代碼模塊,函數(shù)計算引擎提供了我們在運行代碼生命周期的管理。用戶的空間會按照我們在函數(shù)代碼功能的執(zhí)行和空間的大小會動態(tài)的調(diào)配相應的內(nèi)存CPU占用空間。
左側(cè)是做資源的釋放,資源池的維護會通過相應的服務模塊架構(gòu)對資源進行管控。資源的調(diào)度服務就是用來去響應事件觸發(fā)服務,對整個資源池的管理。函數(shù)計算的核心就是基于事件的處理調(diào)度,將用戶的代碼和函數(shù)的核心功能進行動態(tài)的加載空間容器,并且進行動態(tài)銷毀的過程。
史南勝就百度準備開源的一個函數(shù)引擎——EasyFaaS分三部分進行了介紹,這是一個輕量級運行相對來說比較快的函數(shù)計算服務引擎。
第一部分是產(chǎn)品功能,提供了核心的函數(shù)信息管理、代碼包管理、版本管理、灰度發(fā)布,通過這樣的能力滿足了大部分場景下函數(shù)計算的核心訴求,用戶拿到EasyFaaS就可以快速的去搭建一個基于百度函數(shù)計算引擎的計算平臺,能夠滿足他在部分的業(yè)務場景下定制化的開發(fā)。這樣的開發(fā)通過開源的方式能夠讓大家提交相應的功能,將這些功能能夠共建起來;第二部分是請求控制與容器調(diào)度;第三部分是容器與網(wǎng)絡技術(shù),進一步將容器的利用資源最大化,并且提供多元的運行池。
EasyFaaS開源的核心請求模式中,函數(shù)在請求的時候,冷啟動是需要時間的,黃色的圖標標識了整個事件請求以后過來的響應過程,可以支持用戶自己主動的請求,以及通過云端事件觸發(fā)的方式,原數(shù)據(jù)的管理對數(shù)據(jù)的代碼包和信息權(quán)限驗證進行管控,通過funclet模塊進行二次容器初始化和管控。一個pod里面有三個容器,有container和runtime,其中runtime是用來加載多語言運行時的一些鏡像環(huán)境,這些鏡像和環(huán)境初始化以后它便退出了,所以核心部分是通過funclet管控資源,合理的調(diào)配函數(shù)計算能力。綠色的部分是熱啟動的,為了考慮在高并發(fā)場景下能夠支撐業(yè)務場景的請求,所以支持熱加載的模式,熱加載的模式現(xiàn)在可以做到1毫秒以內(nèi)。
03 百度函數(shù)計算應用實踐與經(jīng)驗介紹
我們基于這樣的核心引擎,可以在哪些地方去落地?又產(chǎn)生了哪些經(jīng)驗和教訓呢?史南勝主要舉了三個重要的案例場景。
單體應用,或者微服務應用怎么遷入到Serverless?對于一些場景,比如說小程序場景通過API網(wǎng)關(guān)的模式,然后調(diào)度到百度智能云函數(shù)計算處理業(yè)務,并且發(fā)起相應的業(yè)務邏輯去調(diào)度相應的后端服務,可以將部分的業(yè)務代碼遷移到函數(shù)計算平臺。將原來核心的部分業(yè)務邏輯代碼仍然以微服務這樣的方式放在后端服務里面。如果面對中小型企業(yè)客戶,本來在云上產(chǎn)生了相應的存儲和計算資源,可以繼續(xù)使用云數(shù)據(jù)庫云緩存的方式使用,百度云上的資源可以一站式打通。
在微服務架構(gòu)領(lǐng)域,服務與服務之間除了IDC方式調(diào)用以外,函數(shù)計算方式可以通過黃色的箭頭去發(fā)消息,可以支持和集成,可以提前加載到函數(shù)計算平臺,以鏡像的方式進行加載,這個可以讓包降低很多。所以說消息隊列可以監(jiān)聽完以后,百度函數(shù)計算的另一個板塊可以進行相應。大家可以將百度函數(shù)計算的方式以微服務化的理念來去開發(fā)和運作,并且還可以將這樣的處理方式上傳到云存儲上面去。
業(yè)務方去處理什么呢?他們只需要聚焦在業(yè)務邏輯處理,編寫相應的代碼,百度的代碼和插件層面提供了很好的工具開發(fā),業(yè)務方可以在web id,或者相應的代碼id上面去開發(fā),開發(fā)完了以后通過打包的方式,或者一站式插件集成的方式提交。對于復雜的場景,百度提供了編排方式,只需要編寫Serverless的壓縮文件就可以處理更復雜的分布式的業(yè)務處理邏輯。
這是一個比較典型的提供給一些相應的私有客戶部署的能力,這個能力是用來做什么呢?是用來做整個大數(shù)據(jù)的處理,客戶聚焦在中間這兩部分,就是事件觸發(fā)器定義和函數(shù)計算邏輯的編寫。百度支持通過流失數(shù)據(jù)和批量數(shù)據(jù)鏡像掛載的方式,可以支持afs,并且可以支持消息隊列流式數(shù)據(jù)的監(jiān)聽,通過這樣的方式觸發(fā)調(diào)起函數(shù)計算,執(zhí)行業(yè)務,支持業(yè)務的邏輯計算,將相應的數(shù)據(jù)分發(fā)到其他的業(yè)務部門里面去。
用戶基于百度的Serverless平臺提交代碼就可以定義事件、配置信息了,這樣帶來的好處架構(gòu)上面的事情交給了平臺方去做,業(yè)務平臺上面的事情交給了業(yè)務方去做。
第三個案例,可以通過百度云的函數(shù)計算案例體驗,這個體驗可以給大家包括一些技能的開發(fā)者帶來很多的一些像公積金的計算,或者天氣的查詢,史南勝表示自己也通過小程序和OS方式同時開發(fā)了兩個技能,以小程序的方式和OS方式發(fā)布出來給別人使用,這樣的技能可以直接調(diào)用天氣的方式,比如調(diào)用開放接口的墨跡天氣自己使用,并且可以將業(yè)務邏輯算法集成。這個產(chǎn)生什么收益呢?可以按技能付費,做成三步:云函數(shù)創(chuàng)建與自定義、技能創(chuàng)建與綁定技能、運行時請求路由,請求調(diào)度的資源統(tǒng)計,以及賬號的掛靠。通過這三步可以迅速的將一個新的家庭小度音箱的智能場景能夠快速的連接起來,PPT里面紅色的字樣是核心部分。
除了這些場景,還可以在哪些場景去使用呢?包括應用分發(fā)的場景領(lǐng)域,像游戲包,分渠道的打包和運作過程,小程序的開發(fā),以及在集團內(nèi)部持續(xù)的CICD和搜索圖譜,包括百度的搜索阿拉丁卡片,以及在金融領(lǐng)域私有化部署,還有汽車、教育等領(lǐng)域的新技術(shù)聯(lián)動,以及大數(shù)據(jù)處理,都可以去用函數(shù)計算的方式去處理。
04 未來展望與延伸
百度函數(shù)計算今后還會圍繞哪幾個方面去運作呢?Serverless場景以前大家都處于觀望狀態(tài),現(xiàn)在開始在小規(guī)模場景使用,之后大規(guī)模場景使用。
百度函數(shù)計算重點是幫助客戶轉(zhuǎn)型,還是圍繞降本增效的理念為大家節(jié)省資源,并且提供更穩(wěn)定的服務。在公有化、私有化和開源生態(tài)領(lǐng)域,百度會去形成一個組合拳,開源的部分也希望大家與百度一起來來共建。
百度的云原生,除了Serverless函數(shù)計算,還有容器服務和微服務架構(gòu)的治理,還有容器調(diào)度,以及效率云的DevOps的計算。百度在今年申請了一站式的技術(shù)棧,歡迎大家一起了解一下,不僅提供Serverless的解決方案,還提供容器、微服務架構(gòu)治理的解決方案,包括效率上面的解決方案。
百度在近幾年在云原生方面獲得了一系列的獎項和認證,百度是K8S第一批認證廠商,也是在國內(nèi)第一批和K8S建立起合作,能夠提供服務的第一批公司,百度期待與更多伙伴參與進開源社區(qū)的建設。