日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Serverless 如何在阿里巴巴实现规模化落地?

發(fā)布時(shí)間:2025/3/20 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Serverless 如何在阿里巴巴实现规模化落地? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者 | 趙慶杰(盧令)
來源 | 阿里巴巴云原生公眾號(hào)

一、Serverless 規(guī)模化落地集團(tuán)的成果

2020 年,我們?cè)?Serverless 底層基建上做了非常大的升級(jí),比如計(jì)算升級(jí)到了第四代神龍架構(gòu),存儲(chǔ)上升級(jí)到了盤古 2.0,網(wǎng)絡(luò)上進(jìn)入了百 G 洛神網(wǎng)絡(luò),整體升級(jí)之后性能提升兩倍;BaaS 層面也進(jìn)行了很大的拓展,比如支持了 Event Bridge、Serverless Workflow,進(jìn)一步提升了系統(tǒng)能力。

除此以外,我們還與集團(tuán)內(nèi)十幾個(gè) BU 進(jìn)行了合作共建,幫助業(yè)務(wù)方落地 Serverless 產(chǎn)品,其中包含 雙11 核心的應(yīng)用場(chǎng)景,幫助其順利通過 雙11 流量峰值大考,證明了 Serverless 在核心的應(yīng)用場(chǎng)景下,依然表現(xiàn)得非常穩(wěn)定。

二、兩大背景,兩大優(yōu)勢(shì) – 加速 Serverless 落地

1. Serverless 兩大背景

為什么在集團(tuán)內(nèi)部能快速實(shí)現(xiàn)規(guī)模化地落地 Serverless?首先我們有兩大前提背景:

第一個(gè)背景是上云,集團(tuán)上云是重要的前提,只有上云才能享受到云上的彈性紅利,如果還是自己內(nèi)部的一朵云,后續(xù)的起效降本其實(shí)非常難達(dá)成,所以 2019 年雙十一阿里實(shí)現(xiàn)了核心系統(tǒng) 100% 上云,有了上云前提,Serverless 才有了發(fā)揮非常作用的空間。

第二個(gè)背景是全面云原生化,打造了一個(gè)強(qiáng)大的云原生產(chǎn)品的云家族,對(duì)集團(tuán)內(nèi)部業(yè)務(wù)進(jìn)行賦能,幫助業(yè)務(wù)達(dá)成了在上云基礎(chǔ)上的兩個(gè)主要目標(biāo):提高效能和降低成本, 2020 年天貓雙十一核心系統(tǒng)全面云原生化,效率提升 100%,成本降低 80%。

2. Serverless 兩大優(yōu)勢(shì)

  • 提高效能

一個(gè)標(biāo)準(zhǔn)的云原生應(yīng)用,從研發(fā)到上線到運(yùn)維,需要完成上圖中所有標(biāo)橙色的工作項(xiàng),才能完成正式的微服務(wù)應(yīng)用上線,首先是 CI/CD 代碼構(gòu)建,另外是系統(tǒng)運(yùn)維的可視化工作項(xiàng)目,不僅要配置、對(duì)接,還需對(duì)整體數(shù)據(jù)鏈路進(jìn)行流量評(píng)估、安全評(píng)估、流量管理等,這顯然對(duì)人力門檻要求已經(jīng)非常高。除此以外,為了提升資源利用率,我們還需要對(duì)各個(gè)業(yè)務(wù)進(jìn)行混部,門檻會(huì)進(jìn)一步的提高。

可以看出,整體的云原生傳統(tǒng)應(yīng)用,要實(shí)現(xiàn)微服務(wù)上線所需要完成的工作項(xiàng),對(duì)于開發(fā)者來說非常艱難,需要由多個(gè)角色進(jìn)行完成,但是如果到 Serverless 時(shí)代,開發(fā)者只要完成上圖中標(biāo)藍(lán)色的框 coding,后續(xù)剩下的所有工作項(xiàng),Serverless 的研發(fā)平臺(tái)可以直接幫助業(yè)務(wù)完成上線。

  • 降低成本

提高效能主要指的是人力成本的節(jié)省,而降低成本則針對(duì)的是應(yīng)用的資源利用率。普通應(yīng)用我們需要為峰值預(yù)留資源,但波谷就會(huì)造成極大浪費(fèi)。在 Serverless 場(chǎng)景下,我們只需要按需付費(fèi),拒絕為峰值預(yù)留資源,這是 Serverless 降低成本的最大優(yōu)勢(shì)。

以上兩大背景和兩大優(yōu)勢(shì),符合技術(shù)上云的趨勢(shì),所以集團(tuán)內(nèi)部的業(yè)務(wù)方一拍即合,一些大的 BU 已經(jīng)把 Serverless 落地升級(jí)為戰(zhàn)役層面,加速業(yè)務(wù)落地的 Serverless 場(chǎng)景。目前在集團(tuán)落地的 Serverless 場(chǎng)景已經(jīng)非常豐富,涉及到了核心的一些應(yīng)用、個(gè)性化推薦、視頻處理,還有 AI 推理、業(yè)務(wù)巡檢等等。

三、Serverless 落地場(chǎng)景 – 前端輕應(yīng)用

目前,集團(tuán)內(nèi)前端場(chǎng)景是應(yīng)用 Serverless 最快、最廣的場(chǎng)景,包含淘系、高德、飛豬、優(yōu)酷、閑魚等 10+ 以上 BU。那為什么前端場(chǎng)景適合 Serverless 呢?

上圖是全棧工程師的能力模型圖,一般的微應(yīng)用中需要有三個(gè)角色:前端工程師、后端開發(fā)工程師,運(yùn)維工程師,三者共同完成應(yīng)用的上線發(fā)布。為了提高效能,最近幾年出現(xiàn)了全棧工程師的角色,作為全棧工程師,他要具備這三個(gè)角色的能力,不僅需要前端的應(yīng)用開發(fā)技術(shù),還需要后端系統(tǒng)層面的開發(fā)技能,并且要關(guān)注底層的內(nèi)核、系統(tǒng)資源管理等,這對(duì)于前端工程師來說門檻顯然非常高。

最近幾年 Node.js 技術(shù)興起,能夠替代后端開發(fā)工程師角色,前端工程師只要具備前端開發(fā)能力,就可以充當(dāng)兩個(gè)角色,即前端工程師和后端開發(fā)工程師,但運(yùn)維工程師仍然無法被取代。

而 Serverless 平臺(tái),解決的就是上圖三角形結(jié)構(gòu)中的底部三層,極大降低了前端工程師轉(zhuǎn)變?yōu)槿珬9こ處煹拈T檻,這對(duì)前端業(yè)務(wù)開發(fā)者來說非常有誘惑力。

另外一個(gè)原因是業(yè)務(wù)特性符合,大部分的前端應(yīng)用具有流量洪峰的特性,需要業(yè)務(wù)評(píng)估前置,存在評(píng)估成本;同時(shí)前端場(chǎng)景更新迭代快,快上快下,運(yùn)維成本高;且缺乏動(dòng)態(tài)擴(kuò)縮能力,存在資源碎片及資源浪費(fèi)。而如果使用 Serverless,平臺(tái)會(huì)自動(dòng)幫你解決以上所有的后顧之憂,所以 Serverless 對(duì)前端場(chǎng)景的誘惑力非常大。

1. 前端落地場(chǎng)景

上圖列舉了前端落地的幾個(gè)主要場(chǎng)景和技術(shù)點(diǎn):

BFF 轉(zhuǎn)換成 SFF 層:BFF 主要是 Backend For Frontend,前端工程師做主要運(yùn)維,但到了 Serverless 時(shí)代,運(yùn)維完全交于 Serverless 平臺(tái),前端工程師只需要寫業(yè)務(wù)代碼,就可以完成這項(xiàng)工作。

瘦身:把前端的業(yè)務(wù)邏輯下沉到 SFF 層,由 SFF 層去做邏輯的復(fù)用,把運(yùn)維的能力也交給 Serverless 平臺(tái),實(shí)現(xiàn)客戶端輕量化,提效功能下沉。

云端一體化:一處代碼多端應(yīng)用,這是非常流行的開發(fā)框架,同樣需要 SFF 作為支撐。

CSR/SSR:通過 Serverless 滿足服務(wù)端渲染、客戶端渲染等,來實(shí)現(xiàn)前端首屏的快速展現(xiàn),Serverless 結(jié)合 CDN 整體可以作為前端加速的解決方案。

NoCode:相當(dāng)于在 Serverless 平臺(tái)上做了封裝,只需拖拽幾個(gè)組件,就可以搭建一個(gè)前端頁面,每個(gè)組件都可以用 Serverless 進(jìn)行包裝、功能聚合等,達(dá)到 NoCode 的效果。

中后臺(tái)場(chǎng)景:主要是單體的富應(yīng)用場(chǎng)景,單體應(yīng)用可以完全用 Serverless 模式進(jìn)行托管,完成中后臺(tái)應(yīng)用上線,這同樣也可以節(jié)省運(yùn)維能力、減少成本。

2. 前端 Coding 變化

在前端場(chǎng)景應(yīng)用 Serverless 之后,coding 有哪些變化呢?

對(duì)前端有一定了解的都知道,前端一般分三層:State、View 和 Logic Engine,同時(shí)會(huì)把一些抽象的業(yè)務(wù)邏輯下沉到 FaaS 層云函數(shù)上,然后用云函數(shù)作為 FaaS API 來提供服務(wù),在代碼編寫上可以抽象各類 Aaction,每個(gè) Aaction 可以有 FaaS 函數(shù) API 提供服務(wù)。

以一個(gè)簡(jiǎn)單的頁面為例,頁面左側(cè)是一些渲染接口,可以獲取商品詳情、收貨地址等,這是基于 Faas API 實(shí)現(xiàn)的;右側(cè)的是一些交互邏輯,比如購(gòu)買、添加等,這也是 Faas API 可以繼續(xù)完成的任務(wù)。

頁面設(shè)計(jì)中,所有的 Faas API 不是只能為一個(gè)頁面所使用,它可以為多個(gè)頁面復(fù)用。復(fù)用這些 API 或者進(jìn)行拖拽之后,就可以完成前端頁面的組裝,這對(duì)于前端來說是非常方便的。

3. 前端輕應(yīng)用研發(fā)提效:1-5-10

在前端應(yīng)用 Serverless 之后,我們把 Serverless 對(duì)前端的研發(fā)效能的提效簡(jiǎn)單總結(jié)為 1-5-10,其含義是:

1 分鐘的快速開始:我們把各類主要場(chǎng)景做一個(gè)總結(jié),將其歸類為應(yīng)用模板,每個(gè)用戶或者業(yè)務(wù)方新起一個(gè)業(yè)務(wù)時(shí),只需要選擇相應(yīng)的應(yīng)用啟動(dòng)模板,就會(huì)幫助用戶快速生成業(yè)務(wù)代碼,用戶只需要寫自己的業(yè)務(wù)函數(shù)代碼就可以快速開始。

5 分鐘上線應(yīng)用:完全復(fù)用 Serverless 的運(yùn)維平臺(tái),利用平臺(tái)天然能力,幫助用戶完成灰度發(fā)布等能力;并且配合前端網(wǎng)關(guān)、切流等完成金絲雀測(cè)試等功能。

10 分鐘排查問題:基于上線之后的 Serverless 函數(shù),提供業(yè)務(wù)指標(biāo)或系統(tǒng)指標(biāo)的展示,通過指標(biāo)不僅可以設(shè)置報(bào)警,還可以在控制臺(tái)上給用戶推送錯(cuò)誤日志等,幫助用戶快速定位問題、分析問題,10 分鐘內(nèi)掌握整個(gè) Serverless 函數(shù)的健康狀態(tài)。

4. 前端落地 Serverless 效果

前端實(shí)現(xiàn) Serverless 的場(chǎng)景后效果如何?我們將 3 款 APP 在傳統(tǒng)應(yīng)用研發(fā)模式下所需要的性能和工時(shí)與應(yīng)用 Faas 場(chǎng)景之后進(jìn)行對(duì)比,可以明顯看到,在原有的云原生基礎(chǔ)上,效能還能提升 38.89%,這對(duì)于 Serverless 應(yīng)用或前端應(yīng)用來說效果非常可觀,目前 Serverless 場(chǎng)景已經(jīng)幾乎覆蓋整個(gè)集團(tuán)內(nèi)部,幫助業(yè)務(wù)方實(shí)現(xiàn) Serverless 化,實(shí)現(xiàn)提高效能降低成本兩個(gè)主要目標(biāo)。

四、技術(shù)輸出,拓展新場(chǎng)景

在集團(tuán)的 Serverless 落地過程中,我們發(fā)現(xiàn)了很多新的業(yè)務(wù)訴求,比如存量業(yè)務(wù)如何快速實(shí)現(xiàn)遷移并節(jié)省成本?執(zhí)行時(shí)間是否可以調(diào)大或者調(diào)長(zhǎng)?資源配置是否可以調(diào)高?等等,針對(duì)這些問題我們提出了一些解決方案,基于這些解決方案我們抽象出了產(chǎn)品的一些功能,接下來介紹幾個(gè)比較重要的功能:

1. 自定義鏡像

自定義鏡像主要目的是實(shí)現(xiàn)存量業(yè)務(wù)的無縫遷移,幫助用戶實(shí)現(xiàn)零代碼改造,并且把業(yè)務(wù)代碼完全遷移到 Serverless 平臺(tái)上。

存量業(yè)務(wù)的遷移是非常大的痛點(diǎn),在一個(gè)團(tuán)隊(duì)內(nèi),不可能長(zhǎng)期存在兩種研發(fā)模式,這會(huì)造成極大內(nèi)耗。想讓業(yè)務(wù)方遷移到 Serverless 研發(fā)體系下,必須推出徹底的改造方案,幫助用戶實(shí)現(xiàn) Serverless 體系改造,不僅需要支持新業(yè)務(wù)使用 Serverless,還要幫助存量業(yè)務(wù)實(shí)現(xiàn)零成本快速遷移,所以我們推出了自定義容器功能。

傳統(tǒng) Web 單體應(yīng)用場(chǎng)景特性

  • 應(yīng)用現(xiàn)代化細(xì)粒度責(zé)任拆分、服務(wù)治理等運(yùn)維負(fù)擔(dān);
  • 歷史包袱不易 Serverless 化:云上云下業(yè)務(wù)代碼,依賴、配置不統(tǒng)一;
  • 容量規(guī)劃,自建運(yùn)維、監(jiān)控體系;
  • 資源利用率低 (低流量服務(wù)獨(dú)占資源)。

函數(shù)計(jì)算 + 容器鏡像優(yōu)勢(shì)

  • 低成本遷移單體應(yīng)用;
  • 免運(yùn)維;
  • 無需容量規(guī)劃,自動(dòng)伸縮;
  • 100% 資源利用率,優(yōu)化閑置成本。

自定義容器功能,可以讓傳統(tǒng) Web 單體應(yīng)用(比如 SpringBoot、Wordpress、Flask、Express、Rails 等框架)不需任何改造,就可以以鏡像的方式遷移到函數(shù)計(jì)算上,避免低流量業(yè)務(wù)獨(dú)占服務(wù)器造成資源浪費(fèi)。同時(shí)也可以享受到無需為應(yīng)用做容量規(guī)劃、自動(dòng)伸縮、免運(yùn)費(fèi)等效益。

2. 性能實(shí)例

高性能實(shí)例,減少使用限制,拓展更多場(chǎng)景。比如:代碼包從原來的 50M 上升到 500M,執(zhí)行時(shí)間從原來的 10 分鐘提高到 2 小時(shí),性能規(guī)格比原先提升 4 倍多,能夠最大支持 16G 和 32G 的大規(guī)格實(shí)例,來幫助用戶運(yùn)行一些非常耗時(shí)的長(zhǎng)任務(wù)等等。

函數(shù)計(jì)算服務(wù)了很多場(chǎng)景,在服務(wù)過程中我們收到了很多訴求,比如約束條件多、使用門檻高、計(jì)算場(chǎng)景資源不足等問題。所以針對(duì)這些場(chǎng)景,我們推出了性能實(shí)例功能,目標(biāo)是減少函數(shù)計(jì)算應(yīng)用場(chǎng)景的使用限制,降低使用門檻,并且在執(zhí)行時(shí)長(zhǎng)上、各種指標(biāo)上,用戶可以靈活配置、按需配置。

目前我們支持的 16 核 32G 完全具備與同規(guī)格 ECS 一模一樣的計(jì)算能力,可以適用于高性能的業(yè)務(wù)場(chǎng)景如 AI 推理、音視頻轉(zhuǎn)碼等。這個(gè)功能對(duì)后續(xù)拓展應(yīng)用場(chǎng)景來說非常重要。

挑戰(zhàn)

  • 彈性實(shí)例約束條件多,有一定使用門檻,如執(zhí)行時(shí)長(zhǎng)、實(shí)例規(guī)格等;
  • 傳統(tǒng)單體應(yīng)用、音視頻等重計(jì)算場(chǎng)景下,業(yè)務(wù)需要拆分改造,增加負(fù)擔(dān);
  • vCPU、內(nèi)存、帶寬等資源維度,彈性實(shí)例未給出明確承諾。

目標(biāo)

  • 減小函數(shù)計(jì)算的使用限制,降低企業(yè)使用門檻;
  • 兼容傳統(tǒng)應(yīng)用和重計(jì)算場(chǎng)景;
  • 給用戶明確的資源承諾。

做法

  • 推出更高規(guī)格、資源承諾更明確的性能實(shí)例;
  • 未來,性能實(shí)例將具備更高的穩(wěn)定性 SLA、更豐富的功能配置。

主打場(chǎng)景
計(jì)算型任務(wù)、long-running 任務(wù)、彈性伸縮不敏感任務(wù)。

  • 音視頻轉(zhuǎn)碼處理;
  • AI 推理;
  • 其它需求高規(guī)格的計(jì)算場(chǎng)景。

優(yōu)勢(shì)

性能實(shí)例除放寬限制外,仍保留當(dāng)前函數(shù)計(jì)算產(chǎn)品所具備的所有能力:按量付費(fèi)、預(yù)留模式、單實(shí)例多請(qǐng)求、多種事件源集成、多可用區(qū)容災(zāi)、自動(dòng)伸縮、應(yīng)用的構(gòu)建部署及免運(yùn)維等。

3. 鏈路追蹤

鏈路追蹤功能包括:鏈路還原、拓?fù)浞治觥栴}定位。

一個(gè)正常的微服務(wù),不是一個(gè)函數(shù)就能完成所有工作,需要依賴上下游服務(wù)。在上下游業(yè)務(wù)都是正常的情況下,一般不需要鏈路追蹤,但是如果下游服務(wù)出現(xiàn)了異常,如何定位問題?這時(shí)就可以依賴鏈路追蹤功能,迅速分析上下游的性能瓶頸或者定位問題的發(fā)生點(diǎn)等。

函數(shù)計(jì)算也調(diào)研了很多集團(tuán)內(nèi)外的開源技術(shù)方案,目前已經(jīng)支持 X-trace 功能,并且兼容了開源方案,擁抱開源,提供了兼容 OpenTracing 的產(chǎn)品能力。


上圖是鏈路追蹤的 Demo 圖,通過計(jì)算 tracing 可以可視化看到后端服務(wù)的數(shù)據(jù)庫(kù)訪問開銷,避免大量服務(wù)間的復(fù)雜校驗(yàn)關(guān)系增加問題排查的難度等。函數(shù)計(jì)算還支持函數(shù)代碼級(jí)的鏈路分析能力,幫助用戶優(yōu)化冷啟動(dòng)、關(guān)鍵代碼實(shí)現(xiàn)等。

Serverless 產(chǎn)品在業(yè)務(wù)角度上帶來了巨大收益,但是封裝也帶來了一個(gè)階段性難題——黑盒問題。當(dāng)我們向用戶提供鏈路追蹤技術(shù),同時(shí)也把黑盒問題暴露給用戶,用戶也可以通過這些黑盒問題提升自身的業(yè)務(wù)能力。這也是 Serverless 未來提高用戶體驗(yàn)的方向,后續(xù)我們會(huì)在這方面繼續(xù)加大投入,降低用戶使用 Serverless 的成本。

挑戰(zhàn)

  • Serverless 產(chǎn)品在業(yè)務(wù)角度有巨大收益,但封裝帶來黑盒問題;
  • Serverless 連接云生態(tài),大量的云服務(wù)造成調(diào)用關(guān)系復(fù)雜;
  • Serverless 開發(fā)者依然有鏈路還原、拓?fù)浞治觥栴}定位等需求。

FC + x-trace 主要優(yōu)勢(shì)

  • 函數(shù)代碼級(jí)鏈路分析,幫助優(yōu)化冷啟動(dòng)等關(guān)鍵代碼實(shí)現(xiàn);
  • 服務(wù)調(diào)用級(jí)鏈路追蹤,幫助串聯(lián)云生態(tài)服務(wù),分布式鏈路分析。

4. 異步配置

在 Serverless 場(chǎng)景下,我們提供了離線任務(wù)處理、消息對(duì)立消費(fèi)等功能,在函數(shù)計(jì)算中這類功能的使用率占比 50% 左右。在大量消息消費(fèi)中,存在很多異步配置問題經(jīng)常被業(yè)務(wù)方挑戰(zhàn),比如,這些消息是從哪里來?又去到哪里?被什么服務(wù)消費(fèi)?消費(fèi)的時(shí)間?消費(fèi)的成功率如何?等等。這些問題的可視化/可配置,是目前需要主要解決的重要課題。

上圖為異步配置的工作原理,首先從用戶指定的事件源開始觸發(fā)異步調(diào)用,函數(shù)計(jì)算立即返回請(qǐng)求 ID,同時(shí)也可以調(diào)用執(zhí)行函數(shù),返回執(zhí)行結(jié)果到函數(shù)計(jì)算或者消息隊(duì)列 MNS 里面。然后通過事件源可配置觸發(fā)器等等,這些效果或者主題消費(fèi),可以進(jìn)行消息的再次消費(fèi)。比如,如果一個(gè)消息處理失敗了,可以配置一下進(jìn)行二次處理。

典型的應(yīng)用場(chǎng)景

  • 一是事件閉環(huán),比如對(duì)投遞結(jié)果(如收集監(jiān)控指標(biāo)、報(bào)警配置)進(jìn)行結(jié)果分析;生產(chǎn)事件上客戶不僅可以利用 FC 消費(fèi)事件,也可以利用 FC 主動(dòng)生產(chǎn)事件。
  • 二是日常的異常處理,比如失敗處理、重試策略等。
  • 三是資源回收,用戶可以自定義存貨時(shí)間,及時(shí)丟棄無用消息,節(jié)省資源,這是異步場(chǎng)景非常大的優(yōu)化。

作者簡(jiǎn)介
趙慶杰(盧令),目前就職于阿里云云原生 Serverless 團(tuán)隊(duì),專注于 Serverless 、PaaS,分布式系統(tǒng)架構(gòu)等方向,致力于打造新一代的 Serverless 技術(shù)平臺(tái),把平臺(tái)技術(shù)做到更加普惠。曾就職于百度,負(fù)責(zé)內(nèi)部最大的 PaaS 平臺(tái),承接了 80% 的在線業(yè)務(wù),在 PaaS 方向,后端分布式系統(tǒng)架構(gòu)等領(lǐng)域有豐富的經(jīng)驗(yàn)。

本文整理自【Serverless Live 系列直播】1 月 26 日?qǐng)?br /> 直播回看鏈接:https://developer.aliyun.com/topic/serverless/practices

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Serverless 如何在阿里巴巴实现规模化落地?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。