本篇文章給大家分享的是有關(guān)Serverless在大規(guī)模數(shù)據(jù)處理的實(shí)踐是怎樣的,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供貴定企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為貴定眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。前言
當(dāng)您第一次接觸 Serverless 的時(shí)候,有一個(gè)不那么明顯的新使用方式:與傳統(tǒng)的基于服務(wù)器的方法相比,Serverless 服務(wù)平臺(tái)可以使您的應(yīng)用快速水平擴(kuò)展,并行處理的工作更加有效。這主要是因?yàn)?Serverless 可以不必為閑置的資源付費(fèi),不用擔(dān)心預(yù)留的資源不夠。而在傳統(tǒng)的使用范式中,用戶必須預(yù)留成百上千的服務(wù)器來做一些高度并行化但執(zhí)行時(shí)長(zhǎng)較短的任務(wù),而且必須為每一臺(tái)服務(wù)器買單,即使有的服務(wù)器已經(jīng)不再工作了。
以阿里云 Serverless 產(chǎn)品——函數(shù)計(jì)算為例,便可以完美解決您上述所有顧慮:
如果您的任務(wù)本身計(jì)算量不是很大,但是有大量的并發(fā)任務(wù)請(qǐng)求需要并行處理, 比如多媒體文件處理、文檔轉(zhuǎn)換等;
一個(gè)任務(wù)本身計(jì)算量很大,要求單個(gè)任務(wù)很快處理完,并且還能支持并行處理多個(gè)任務(wù)。
在這種場(chǎng)景下,用戶唯一關(guān)注的就是:您的任務(wù)是可以分治拆解并且子任務(wù)是可以并行處理的,一個(gè)需要一個(gè)小時(shí)才能處理完的長(zhǎng)任務(wù),可以分解成 360 個(gè)獨(dú)立的 10 秒長(zhǎng)的子任務(wù)并行處理,這樣,以前您要花一個(gè)小時(shí)才能處理完的任務(wù),現(xiàn)在只需要 10 秒就可以搞定。由于采用的是按量計(jì)費(fèi)的模型,完成的計(jì)算量和成本是大致相當(dāng)?shù)模鴤鹘y(tǒng)模型則因?yàn)轭A(yù)留資源肯定會(huì)存在浪費(fèi),浪費(fèi)的費(fèi)用也是需要您去承擔(dān)的。
接下來,將詳細(xì)闡述 Serverless 在大規(guī)模數(shù)據(jù)處理上的實(shí)踐。
在介紹相關(guān)的大規(guī)模數(shù)據(jù)處理示例之前, 這里先簡(jiǎn)單介紹一下函數(shù)計(jì)算。
開發(fā)者使用編程語言編寫應(yīng)用和服務(wù),函數(shù)計(jì)算支持的開發(fā)語言請(qǐng)參見開發(fā)語言列表;
開發(fā)者上傳應(yīng)用到函數(shù)計(jì)算;
觸發(fā)函數(shù)執(zhí)行:觸發(fā)方式包括 OSS、API 網(wǎng)關(guān)、日志服務(wù)、表格存儲(chǔ)以及函數(shù)計(jì)算 API、SDK 等;
動(dòng)態(tài)擴(kuò)容以響應(yīng)請(qǐng)求:函數(shù)計(jì)算可以根據(jù)用戶請(qǐng)求量自動(dòng)擴(kuò)容,該過程對(duì)您和您的用戶均透明無感知;
根據(jù)函數(shù)的實(shí)際執(zhí)行時(shí)間按量計(jì)費(fèi):函數(shù)執(zhí)行結(jié)束后,可以通過賬單來查看執(zhí)行費(fèi)用,收費(fèi)粒度精確到 100 毫秒。
詳情: 函數(shù)計(jì)算官網(wǎng)
至此,您大約可以簡(jiǎn)單理解到函數(shù)計(jì)算是怎么運(yùn)作的,接下來以大量視頻并行轉(zhuǎn)碼的案例來闡述:假設(shè)一家在家教育或娛樂相關(guān)的企業(yè),老師授課視頻或者新的片源一般是集中式產(chǎn)生,而您希望這些視頻被快速轉(zhuǎn)碼處理完以便能讓客戶快速看到視頻回放。比如在當(dāng)下疫情中,在線教育產(chǎn)生的課程激增,而出課高峰一般是 10 點(diǎn)、12 點(diǎn)、16 點(diǎn)、18 點(diǎn)等明顯的峰值段,特定的時(shí)間內(nèi)(比如半個(gè)小時(shí))處理完所有新上傳的視頻是一個(gè)通用而且普遍的需求。
OSS 觸發(fā)器
如上圖所示,用戶上傳一個(gè)視頻到 OSS,OSS 觸發(fā)器自動(dòng)觸發(fā)函數(shù)執(zhí)行,函數(shù)計(jì)算自動(dòng)擴(kuò)容,執(zhí)行環(huán)境內(nèi)的函數(shù)邏輯調(diào)用 FFmpeg 進(jìn)行視頻轉(zhuǎn)碼,并且將轉(zhuǎn)碼后的視頻保存回 OSS。
消息觸發(fā)器
如上圖所示,應(yīng)用只需要發(fā)一個(gè)消息,自動(dòng)觸發(fā)函數(shù)執(zhí)行音視頻處理的任務(wù)即可,函數(shù)計(jì)算自動(dòng)擴(kuò)容,執(zhí)行環(huán)境內(nèi)的函數(shù)邏輯調(diào)用 FFmpeg 進(jìn)行視頻轉(zhuǎn)碼, 并且將轉(zhuǎn)碼后的視頻保存回 OSS。
直接手動(dòng)調(diào)用 SDK 執(zhí)行音視頻處理任務(wù)
以 python 為例,大致如下:
python # -*- coding: utf-8 -*- import fc2 import json client = fc2.Client(endpoint="http://123456.cn-hangzhou.fc.aliyuncs.com",accessKeyID="xxxxxxxx",accessKeySecret="yyyyyy") # 可選擇同步/異步調(diào)用 resp = client.invoke_function("FcOssFFmpeg", "transcode", payload=json.dumps( { "bucket_name" : "test-bucket", "object_key" : "video/inputs/a.flv", "output_dir" : "video/output/a_out.mp4" })).data print(resp)
從上面我們也可以看出,觸發(fā)函數(shù)執(zhí)行的方式也很多,同時(shí)簡(jiǎn)單配置下 SLS 日志,就可以很快實(shí)現(xiàn)一個(gè)彈性高可用、按量付費(fèi)的音視頻處理系統(tǒng),同時(shí)能提供免運(yùn)維、具體業(yè)務(wù)數(shù)據(jù)可視化、強(qiáng)大自定義監(jiān)控報(bào)警等超強(qiáng)功能的 dashboard。
目前已經(jīng)落地的音視頻案例有 UC、語雀、躺平設(shè)計(jì)之家、虎撲以及幾家在線教育的頭部客戶等,其中有些客戶高峰期間,彈性使用到了萬核以上 CPU 計(jì)算資源,并行處理的視頻達(dá)到 1700+,同時(shí)提供了極高的性價(jià)比。
詳情可以參考:
simple-video-processing)
fc-oss-ffmpeg
這種將任務(wù)分而治之的思想應(yīng)用在函數(shù)計(jì)算上是一件有趣的事情,在這里舉一個(gè)例子,比如您有一個(gè)超大的 20G 的 1080P 高清視頻需要轉(zhuǎn)碼,即使您使用一臺(tái)高配機(jī)器,需要的時(shí)間可能還是要按小時(shí)計(jì),如果中途出問題中斷轉(zhuǎn)碼,您只能重新開始再重復(fù)一遍轉(zhuǎn)碼的過程,如果您使用分治的思想+函數(shù)計(jì)算,轉(zhuǎn)碼的過程衍變?yōu)?
分片-> 并行轉(zhuǎn)碼分片-> 合并分片
,這樣就可以解決您上述的兩個(gè)痛點(diǎn):
分片和合成分片是內(nèi)存級(jí)別的拷貝,需要的計(jì)算量極小,真正消耗計(jì)算量的轉(zhuǎn)碼,拆分成了很多子任務(wù)并行處理,在這個(gè)模型中,分片轉(zhuǎn)碼的大時(shí)間基本等同于整個(gè)大視頻的轉(zhuǎn)碼時(shí)間;
即使中途某個(gè)分片轉(zhuǎn)碼出現(xiàn)異常,只需要重試這個(gè)分片的轉(zhuǎn)碼即可,不需要整個(gè)大任務(wù)推倒重來。
通過將大任務(wù)合理的分解,配合使用函數(shù)計(jì)算,編寫一點(diǎn) code,就可以快速完成一個(gè)彈性高可用、并行加速、按量付費(fèi)的大型數(shù)據(jù)處理系統(tǒng)。
在介紹這個(gè)方案之前,我們先簡(jiǎn)單介紹一下 Serverless 工作流,Serverless 工作流可以很好地將函數(shù)和其他云服務(wù)和自建服務(wù)有組織地編排起來。
Serverless 工作流(Serverless Workflow)是一個(gè)用來協(xié)調(diào)多個(gè)分布式任務(wù)執(zhí)行的全托管云服務(wù)。在 Serverless 工作流中,您可以用順序、分支、并行等方式來編排分布式任務(wù),Serverless 工作流會(huì)按照設(shè)定好的步驟可靠地協(xié)調(diào)任務(wù)執(zhí)行,跟蹤每個(gè)任務(wù)的狀態(tài)轉(zhuǎn)換,并在必要時(shí)執(zhí)行用戶定義的重試邏輯,以確保工作流順利完成。Serverless 工作流簡(jiǎn)化了開發(fā)和運(yùn)行業(yè)務(wù)流程所需要的任務(wù)協(xié)調(diào)、狀態(tài)管理以及錯(cuò)誤處理等繁瑣工作,讓您聚焦業(yè)務(wù)邏輯開發(fā)。
詳情: Serverless 工作流官網(wǎng)
接下來以一個(gè)大視頻快速轉(zhuǎn)碼的案例來闡述 Serverless 工作編排函數(shù),實(shí)現(xiàn)大計(jì)算任務(wù)的分解,并行處理子任務(wù),最終達(dá)到快速完成單個(gè)大任務(wù)的目的。
如上圖所示,假設(shè)用戶上傳一個(gè) mov 格式的視頻到 OSS,OSS 觸發(fā)器自動(dòng)觸發(fā)函數(shù)執(zhí)行,函數(shù)調(diào)用 FnF 執(zhí)行,F(xiàn)nF 同時(shí)進(jìn)行 1 種或者多種格式的轉(zhuǎn)碼(由 template.yml 中的 DST_FORMATS 參數(shù)控制),假設(shè)配置的是同時(shí)進(jìn)行 mp4 和 flv 格式的轉(zhuǎn)碼。
一個(gè)視頻文件可以同時(shí)被轉(zhuǎn)碼成各種格式以及其他各種自定義處理,比如增加水印處理或者在 after-process 更新信息到數(shù)據(jù)庫(kù)等;
當(dāng)有多個(gè)文件同時(shí)上傳到 OSS,函數(shù)計(jì)算會(huì)自動(dòng)伸縮,并行處理多個(gè)文件,同時(shí)每次文件轉(zhuǎn)碼成多種格式也是并行;
結(jié)合 NAS + 視頻切片,可以解決超大視頻的轉(zhuǎn)碼,對(duì)于每一個(gè)視頻,先進(jìn)行切片處理,然后并行轉(zhuǎn)碼切片,最后合成,通過設(shè)置合理的切片時(shí)間,可以大大加快較大視頻的轉(zhuǎn)碼速度;
fnf 可以跟蹤每一步執(zhí)行情況,并且可以自定義每一個(gè)步驟的重試,提高任務(wù)系統(tǒng)的魯棒性,如: retry-example
詳情可以參考: fc-fnf-video-processing
在任務(wù)分治,并行加速具體的案例中,上面分享的是 CPU 密集型任務(wù)分解,但也可以進(jìn)行 IO 密集型任務(wù)分解,比如這個(gè)需求:上海的 region 的 OSS bucket 中的一個(gè) 20G 大文件,秒級(jí)轉(zhuǎn)存回杭州的 OSS Bucket 中。這里也可以采用分治的思路,Master 函數(shù)在接到轉(zhuǎn)存任務(wù)之后,將超大文件進(jìn)行分片的 range 分配給每個(gè) Worker 子函數(shù),Worker 子函數(shù)并行轉(zhuǎn)存屬于自己那部分的分片,Master 函數(shù)待所有子 Worker 運(yùn)行完畢之后,提交合并分片請(qǐng)求,完成整個(gè)轉(zhuǎn)存任務(wù)。
詳情可以參考: 利用函數(shù)計(jì)算多實(shí)例并發(fā)實(shí)現(xiàn)秒級(jí)轉(zhuǎn)存超大文件
本文探討了 Serverless 服務(wù)平臺(tái)可以使您的應(yīng)用快速水平擴(kuò)展,并行處理的工作更加有效,并給出了具體的實(shí)踐案例,無論在 CPU 密集型還是 IO 密集型場(chǎng)景,函數(shù)計(jì)算 + Serverless 都能完美解決您以下顧慮:
不必為閑置的資源付費(fèi)
不用擔(dān)心計(jì)算資源預(yù)留不夠
大計(jì)算量的任務(wù)需要快速處理完畢
更好的任務(wù)流程跟蹤
完善的監(jiān)控報(bào)警、免運(yùn)維、業(yè)務(wù)數(shù)據(jù)可視化等
….
本文中對(duì)于 Serverless 音視頻處理只是一個(gè)示例,它展示的是函數(shù)計(jì)算配合 Serverless 工作流在離線計(jì)算場(chǎng)景中的能力和獨(dú)一無二的優(yōu)勢(shì)。我們可以用發(fā)散的方式去拓展 Serverless 在大規(guī)模數(shù)據(jù)處理實(shí)踐的邊界,比如AI、基因計(jì)算、科學(xué)仿真等。
以上就是Serverless在大規(guī)模數(shù)據(jù)處理的實(shí)踐是怎樣的,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
分享文章:Serverless在大規(guī)模數(shù)據(jù)處理的實(shí)踐是怎樣的-創(chuàng)新互聯(lián)
文章位置:http://jinyejixie.com/article6/ccegig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、企業(yè)建站、全網(wǎng)營(yíng)銷推廣、搜索引擎優(yōu)化、App開發(fā)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容