在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Serverless Streaming:毫秒級(jí)流式大文件處理探秘

jf_81200783 ? 來源:jf_81200783 ? 作者:jf_81200783 ? 2023-03-21 10:37 ? 次閱讀

背景

企業(yè)應(yīng)用從微服務(wù)架構(gòu)向 Serverless(無服務(wù)器)架構(gòu)演進(jìn),開啟了無服務(wù)器時(shí)代,面向無服務(wù)器計(jì)算領(lǐng)域的 Serverless 工作流也應(yīng)運(yùn)而生。許多 Serverless 應(yīng)用程序不是由單個(gè)事件觸發(fā)的簡單函數(shù),而是由一系列函數(shù)多個(gè)步驟組成的,而函數(shù)在不同步驟中由不同事件觸發(fā)。Serverless 工作流用于將函數(shù)編排為協(xié)調(diào)的微服務(wù)應(yīng)用程序。

Serverless 工作流由于自身可編排、有狀態(tài)、持久化、可視化監(jiān)控、異常處理、云服務(wù)集成等特性,適用于很多應(yīng)用場(chǎng)景,比如:復(fù)雜度高需要抽象的業(yè)務(wù)(訂單管理,CRM 等)、業(yè)務(wù)需要自動(dòng)中斷 / 恢復(fù)能力,如多個(gè)任務(wù)之間需要人工干預(yù)的場(chǎng)景(人工批,部署流水線等)、業(yè)務(wù)需要手動(dòng)中斷 / 恢復(fù)(數(shù)據(jù)備份 / 恢復(fù)等)、需要詳細(xì)監(jiān)控任務(wù)執(zhí)行狀態(tài)的場(chǎng)景、流式處理(日志分析,圖片 / 視頻處理等)

當(dāng)前大部分 Serverless Workflow 平臺(tái)更多關(guān)注控制流程的編排,忽視了工作流中數(shù)據(jù)流的編排和高效傳輸,上述場(chǎng)景 1-4 中,由于數(shù)據(jù)流相對(duì)簡單,所以各大平臺(tái)支持都比較好,但是對(duì)于文件轉(zhuǎn)碼等存在超大數(shù)據(jù)流的場(chǎng)景,當(dāng)前各大平臺(tái)沒有給出很好的解決方案。華為云 FunctionGraph 函數(shù)工作流針對(duì)該場(chǎng)景,提出了 Serverless Streaming 的流式處理方案,支持毫秒級(jí)響應(yīng)文件處理。本文將以圖片處理的場(chǎng)景作為例子詳細(xì)描述當(dāng)前的問題以及華為云 FunctionGraph 函數(shù)工作流在面對(duì)該問題時(shí)采取的一系列實(shí)踐。

問題描述

先以一個(gè)圖片處理的場(chǎng)景舉例,用戶想要執(zhí)行一個(gè)圖片壓縮并且加水印的任務(wù),這個(gè)場(chǎng)景在典型的工作流系統(tǒng)中,可以用如圖一所示的方式進(jìn)行處理。

poYBAGQZGFmAJUePAAF-nLGKLzs454.jpg

如上圖所示,圖片壓縮和圖片加水印的結(jié)果都是二進(jìn)制文件格式,但是當(dāng)前主流的 Serverless Workflow 平臺(tái)在多個(gè)步驟之間傳輸上下文都只能支持文本格式傳輸,所以圖片壓縮和加水印的結(jié)果都需要經(jīng)過 BASE64 或者其他轉(zhuǎn)碼方式轉(zhuǎn)成文本進(jìn)行數(shù)據(jù)流傳輸。

但是這種方案的限制和使用成本都比較高:

1、函數(shù)的 Response Body 通常有大小限制,所以這種方式無法處理超大文件。2、執(zhí)行結(jié)果轉(zhuǎn)換為文本,需要消耗大量內(nèi)存,內(nèi)存成本比較高。

如何簡單高效的進(jìn)行文件處理,業(yè)界也給出了其他解決方案,如通過云存儲(chǔ)進(jìn)行中間結(jié)果轉(zhuǎn)儲(chǔ)、AWS 的 Lambda Object 文件轉(zhuǎn)換方案。下面給出了這兩個(gè)方案的優(yōu)缺點(diǎn)分析。

方案一:中間結(jié)果通過云存儲(chǔ)進(jìn)行轉(zhuǎn)儲(chǔ)

該方案如圖所示:

pYYBAGQZGFqACvBdAAFhg66oejM608.jpg

兩個(gè)步驟之間的文件流通過云存儲(chǔ)去傳遞,這種方案支持大文件流的傳輸,但是由于中間多了一次到云存儲(chǔ)的網(wǎng)絡(luò)傳輸,如果業(yè)務(wù)對(duì)時(shí)延要求不高,該方案問題不大,但是對(duì)于時(shí)延敏感類業(yè)務(wù),這種多出的時(shí)延是無法接受的。另外云存儲(chǔ)轉(zhuǎn)儲(chǔ)需要額外的成本,如果調(diào)用量比較大,使用成本較高。

方案二:AWS Lambda Object

poYBAGQZGFuAXv6TAAJMDvoRo8U021.jpg

AWS 對(duì)于這種文件處理場(chǎng)景,提出了基于 S3 和 Lambda 的 Lambda Object 的方案,參考 [1],簡單來說,是支持為 S3 文件桶的 getObject API 提供 Access Point,AccessPoint 可以指向某一個(gè) Lambda 函數(shù),在函數(shù)中可以對(duì)原來的桶數(shù)據(jù)文件進(jìn)行修改,比如可以將原始視頻轉(zhuǎn)碼,得到轉(zhuǎn)碼后的結(jié)果返回到客戶端。雖然解決了時(shí)延和大文件處理的問題,但是這個(gè)方案強(qiáng)依賴 S3 的 API,用戶無法進(jìn)行流程編排,也無法通過事件觸發(fā),不是一個(gè)真正通用的方案。

業(yè)界方案總結(jié)

簡單總結(jié)如表 1 所示,當(dāng)前業(yè)界提供的各個(gè)方案或多或少存在一些局限性,沒有辦法在同時(shí)滿足低時(shí)延的情況下支持可編排的文件處理。然而低時(shí)延和可編排都是大量客戶所追求的關(guān)鍵能力,如何解決這些關(guān)鍵痛點(diǎn),提升客戶體驗(yàn),成為了當(dāng)前我們重點(diǎn)想要攻克的難題。

業(yè)界文件處理方案對(duì)比

pYYBAGQZGFyAchSOAAFCpDjQSF4823.jpg

華為云 FunctionGraph 的 Serverless Streaming 流式處理方案

針對(duì)當(dāng)前業(yè)界缺少高效,可編排的文件處理方案的痛點(diǎn),華為云 FunctionGraph 函數(shù)工作流提出 Serverless Streaming 的流式可編排的文件處理解決方案,步驟與步驟之間通過數(shù)據(jù)流驅(qū)動(dòng),更易于用戶理解。本章通過圖片處理的例子解釋該方案的實(shí)現(xiàn)機(jī)制。

如果需要驅(qū)動(dòng)一個(gè)工作流執(zhí)行,工作流系統(tǒng)需要處理兩個(gè)部分:

1、控制流:控制工作流的步驟間流轉(zhuǎn),以及步驟對(duì)應(yīng)的 Serverless 函數(shù)的執(zhí)行。確保步驟與步驟之間有序執(zhí)行。

2、數(shù)據(jù)流:控制整個(gè)工作流的數(shù)據(jù)流轉(zhuǎn),通常來說上一個(gè)步驟的輸出是下一個(gè)步驟的輸入,比如上述圖片處理工作流中,圖片壓縮的結(jié)果是打水印步驟的輸入數(shù)據(jù)。

在普通的服務(wù)編排中,由于需要精準(zhǔn)控制各個(gè)服務(wù)的執(zhí)行順序,所以控制流是工作流的核心部分。然而在文件處理等流式處理場(chǎng)景中,對(duì)控制流的要求并不高,以上述圖片處理場(chǎng)景舉例,可以對(duì)大圖片進(jìn)行分塊處理,圖片壓縮和加水印的任務(wù)不需要嚴(yán)格的先后順序,圖片壓縮處理完一個(gè)分塊可以直接流轉(zhuǎn)到下一個(gè)步驟,而不需要等待圖片壓縮把所有分塊處理完再開始加水印的任務(wù)。

基于上述理解,華為云 FunctionGraph 工作流的 Serverless Streaming 方案架構(gòu)設(shè)計(jì)如圖所示:

poYBAGQZGF2AR8b7AAGH-Tp-tKw829.jpg

在Serverless Streaming 的流程中,弱化控制流中步驟之間的先后執(zhí)行順序,允許異步同時(shí)執(zhí)行,步驟與步驟之間的交互通過數(shù)據(jù)流驅(qū)動(dòng)。其中數(shù)據(jù)流的控制通過 Stream Bridge 組件來實(shí)現(xiàn)。

同時(shí)函數(shù) SDK 增加流式數(shù)據(jù)返回接口,用戶不需要將整個(gè)文件內(nèi)容返回,而是通過 gRPC Stream 的方式將數(shù)據(jù)寫入到 Stream Bridge,Stream Bridge 用來分發(fā)數(shù)據(jù)流到下一個(gè)步驟的函數(shù) Pod 中。

這種方式存在如下優(yōu)點(diǎn):

1、由于控制流的弱化,完全通過數(shù)據(jù)流來驅(qū)動(dòng)流程執(zhí)行,不需要再強(qiáng)限制步驟之間完成的先后順序,如圖片處理場(chǎng)景中,壓縮和加水印的步驟可以做到完全并行執(zhí)行,這樣可以加速整個(gè)流程的執(zhí)行速度。

2、每次請(qǐng)求都開辟獨(dú)立緩沖區(qū),緩沖區(qū)限制大小,數(shù)據(jù)流僅在內(nèi)網(wǎng)傳輸,保證整體數(shù)據(jù)傳輸?shù)目煽啃院桶踩浴?/p>

3、不依賴其他外部服務(wù),使用成本低。

4、對(duì)于開發(fā)人員來講,只需要關(guān)注數(shù)據(jù)流的處理,而不需要關(guān)心數(shù)據(jù)流如何轉(zhuǎn)發(fā),如何存儲(chǔ),降低開發(fā)難度。

5、底層流式傳輸通過 gRPC 進(jìn)行,整體數(shù)據(jù)傳輸效率高

在 FunctionGraph 中開發(fā)文件處理工作流 當(dāng)前 FunctionGraph 已經(jīng)基于上述方案支持了在函數(shù)工作流中進(jìn)行數(shù)據(jù)流處理,并且將結(jié)果通過流數(shù)據(jù)的方式返回到客戶端,以構(gòu)建一個(gè)圖片處理工作流舉例:

1、首先創(chuàng)建一個(gè)圖片壓縮的函數(shù),其中代碼在處理返回?cái)?shù)據(jù)通過 ctx.Write() 函數(shù)將結(jié)果以流式數(shù)據(jù)的形式返回:

poYBAGQZGF-AWixOAAFuJqw2C-s012.jpg

FunctionGraph 通過 ctx.Write() 函數(shù)提供了流式返回的能力,對(duì)開發(fā)者來說,只需要將最終結(jié)果通過流的方式返回,而不需要關(guān)注網(wǎng)絡(luò)傳輸?shù)募?xì)節(jié)。

2、在函數(shù)控制臺(tái)中啟用該函數(shù)的流式返回能力

pYYBAGQZGGCAOhwVAABbay3eEY4320.jpg

3、用上面的方式完成其他函數(shù)的編寫,最后在 FunctionGraph 的函數(shù)流控制臺(tái)完成工作流編排,舉例如下:

poYBAGQZGGCAO4YkAAEwLFMWZ4Y016.jpg

4、調(diào)用工作流的同步執(zhí)行接口,獲取最終結(jié)果的文件流,數(shù)據(jù)將以 chunked 流式返回的方式返回到客戶端

使用效果

針對(duì)圖片處理的具體場(chǎng)景,我們測(cè)試對(duì)比了不同大小圖片(333k、1m、4m、7m、10m、12m)進(jìn)行圖片切割和圖片壓縮的場(chǎng)景,由于 BASE64 轉(zhuǎn)碼方案無法支持大文件,AWS Lambda Object 方案無法支持編排,所以這里只對(duì)比使用 OBS 轉(zhuǎn)儲(chǔ)方案和基于流式返回的 Servlerss Streaming 方案的時(shí)延數(shù)據(jù)。具體對(duì)比數(shù)據(jù)圖表如下:

pYYBAGQZGGGANuDZAAApZjT-rtA741.jpg

響應(yīng)時(shí)延:指客戶端發(fā)出請(qǐng)求到收到第一個(gè)字節(jié)消耗的時(shí)延(單位:秒)

端到端時(shí)延:指客戶端發(fā)出請(qǐng)求到收到最后一個(gè)字節(jié)消耗的時(shí)延(單位:秒)

從測(cè)試數(shù)據(jù)可以看出,響應(yīng)時(shí)延和端到端時(shí)延使用流式返回方案后都得到了不同程度的降低。其中響應(yīng)時(shí)延降低幅度較大,OBS 轉(zhuǎn)儲(chǔ)方案響應(yīng)時(shí)延隨著圖片大小增大,響應(yīng)時(shí)延呈線性上升,超過 4M 的圖片響應(yīng)時(shí)延就達(dá)到秒級(jí),使用流式返回方案后,響應(yīng)時(shí)延持續(xù)穩(wěn)定在毫秒級(jí)的水平。從中可以發(fā)現(xiàn),基于 Serverless Streaming 的流式返回方案不僅具備流式處理和可編排的能力,并且在文件處理場(chǎng)景中可以顯著降低時(shí)延,從多個(gè)方面提升了用戶使用體驗(yàn)。

總結(jié)與展望

主要討論了 Serverless Workflow 在大文件處理時(shí)碰到的問題,F(xiàn)unctionGraph 通過簡化數(shù)據(jù)傳輸鏈路,提升文件流處理效率, 給出了一種穩(wěn)定高效、極低時(shí)延的大文件處理方法 Serverless Streaming,支持毫秒級(jí)的文件流式處理, 顯著改善函數(shù)編排在文件處理等場(chǎng)景中的用戶體驗(yàn)。

FunctionGraph 作為華為元戎加持的下一代 Serverless 函數(shù)計(jì)算與編排服務(wù),將圍繞通用全場(chǎng)景 Serverless 的前沿理論及案例實(shí)踐,持續(xù)分享。

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 流式
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    5407
  • serverless
    +關(guān)注

    關(guān)注

    0

    文章

    65

    瀏覽量

    4649
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    智能電網(wǎng)第6期 毫秒級(jí)時(shí)延如何實(shí)現(xiàn)?電力設(shè)備狀態(tài)實(shí)時(shí)監(jiān)控優(yōu)化

    隨著新型電力系統(tǒng)建設(shè)加速推進(jìn),電力設(shè)備狀態(tài)監(jiān)控對(duì)通信時(shí)延的要求已提升至毫秒級(jí)。在變電站自動(dòng)化、輸電線路監(jiān)測(cè)等場(chǎng)景中,傳統(tǒng)通信方案面臨嚴(yán)峻挑戰(zhàn): ? 時(shí)延瓶頸:保護(hù)控制類業(yè)務(wù)要求端到端時(shí)延 可靠性挑戰(zhàn)
    的頭像 發(fā)表于 04-25 09:40 ?74次閱讀
    智能電網(wǎng)第6期 <b class='flag-5'>毫秒</b><b class='flag-5'>級(jí)</b>時(shí)延如何實(shí)現(xiàn)?電力設(shè)備狀態(tài)實(shí)時(shí)監(jiān)控優(yōu)化

    鴻蒙文件傳輸三方庫上線開源鴻蒙社區(qū) 十行代碼實(shí)現(xiàn)大文件高速傳輸

    近日,華為在OpenHarmony社區(qū)上線了“super_fast_file_trans”文件傳輸三方庫(以下簡稱“SFFT”)。這一三方庫的推出,為開發(fā)者提供了一套支持大文件多線程并發(fā)分塊下載
    發(fā)表于 03-06 10:29

    探秘新能源行業(yè)利器:多串保護(hù)板測(cè)試儀的革新應(yīng)用

    探秘新能源行業(yè)利器:多串保護(hù)板測(cè)試儀的革新應(yīng)用
    的頭像 發(fā)表于 03-05 15:09 ?293次閱讀

    求助,請(qǐng)問DLP3010evm的External pattern streaming mode如何使用?

    關(guān)于DLP3010的External pattern streaming mode,有如下幾個(gè)問題想請(qǐng)教: 1.能否通31010EVM底板上的HDMI接口向DLP發(fā)送2D圖片?IT6801解碼格式
    發(fā)表于 02-27 07:39

    如何使用SFTP傳輸大文件

    在當(dāng)今的數(shù)字化時(shí)代,大文件傳輸變得越來越常見。無論是企業(yè)數(shù)據(jù)遷移、遠(yuǎn)程備份還是內(nèi)容分發(fā),都需要一種既安全又高效的文件傳輸方式。SFTP作為一種基于SSH的文件傳輸協(xié)議,提供了一種加密的傳輸方式,確保
    的頭像 發(fā)表于 11-13 14:11 ?1571次閱讀

    請(qǐng)問PurePath Studio有定時(shí)器控件嗎?用AIC3254如何實(shí)現(xiàn)毫秒級(jí)的定時(shí)?

    PurePath Studio有定時(shí)器控件嗎?用AIC3254如何實(shí)現(xiàn)毫秒級(jí)的定時(shí)?
    發(fā)表于 10-25 07:26

    華為云全域 Serverless 8 月更新盤點(diǎn)

    【摘要】 近年來,華為云持續(xù)構(gòu)筑全域 Serverless 云服務(wù),推出了一系列競(jìng)爭(zhēng)力領(lǐng)先的 Serverless 產(chǎn)品,包括函數(shù)工作流 FunctionGraph、Serverless 容器引擎
    的頭像 發(fā)表于 09-27 00:06 ?1067次閱讀
    華為云全域 <b class='flag-5'>Serverless</b> 8 月更新盤點(diǎn)

    流式滑動(dòng)變阻器的選型原則

    流式滑動(dòng)變阻器,又稱為限流電阻器或限流電位器,是一種用于限制電路中電流大小的電子元件。在電子電路設(shè)計(jì)中,選擇合適的限流式滑動(dòng)變阻器對(duì)于確保電路的穩(wěn)定運(yùn)行和提高電路性能至關(guān)重要。 一、限流式滑動(dòng)
    的頭像 發(fā)表于 08-05 14:31 ?1450次閱讀

    探秘LED顯示屏背后的秘密:數(shù)字信號(hào)與數(shù)字電路的奇妙世界

    探秘LED顯示屏背后的秘密:數(shù)字信號(hào)與數(shù)字電路的奇妙世界
    的頭像 發(fā)表于 08-02 02:36 ?667次閱讀

    如何修改buildroot和debian文件系統(tǒng)

    本文檔主要介紹在沒有編譯環(huán)境的情況下,如何修改buildroot和debian文件系統(tǒng)方法,如在buildroot文件系統(tǒng)中添加文件、修改目錄等文件操作,在debian
    的頭像 發(fā)表于 07-22 17:46 ?735次閱讀
    如何修改buildroot和debian<b class='flag-5'>文件</b>系統(tǒng)

    全球銷量領(lǐng)先車企基于 Serverless 服務(wù)構(gòu)建數(shù)據(jù)實(shí)時(shí)處理的千萬級(jí)車聯(lián)網(wǎng)業(yè)務(wù)

    PaaS 產(chǎn)品部海外產(chǎn)品總監(jiān)肖振華 在?“A?Leading?Global?Automaker's?Serverless?Approach?to?Real-Time?IoV?Data
    的頭像 發(fā)表于 07-11 21:04 ?2.5w次閱讀
    全球銷量領(lǐng)先車企基于 <b class='flag-5'>Serverless</b> 服務(wù)構(gòu)建數(shù)據(jù)實(shí)時(shí)<b class='flag-5'>處理</b>的千萬<b class='flag-5'>級(jí)</b>車聯(lián)網(wǎng)業(yè)務(wù)

    流式繼電器結(jié)構(gòu)上有哪些特點(diǎn)

    流式繼電器是一種利用整流原理來實(shí)現(xiàn)繼電器動(dòng)作的電氣設(shè)備,廣泛應(yīng)用于電力系統(tǒng)、工業(yè)自動(dòng)化、通信設(shè)備等領(lǐng)域。本文將詳細(xì)介紹整流式繼電器的結(jié)構(gòu)特點(diǎn),包括其工作原理、主要組成部分、性能指標(biāo)、應(yīng)用場(chǎng)景等方面
    的頭像 發(fā)表于 06-28 10:15 ?1572次閱讀

    esp32如何一次性讀取大文件數(shù)據(jù)?

    esp32沒有提供數(shù)據(jù)庫讀寫的例子,最近有個(gè)大文件,無法一次性讀出,請(qǐng)問,怎么讀取,json中一部分json數(shù)組。然后修改完了以后,在寫入進(jìn)去?
    發(fā)表于 06-25 06:52

    鴻蒙開發(fā)文件管理:【@ohos.fileio (文件管理)】

    該模塊提供文件存儲(chǔ)管理能力,包括文件基本管理、文件目錄管理、文件信息統(tǒng)計(jì)、文件流式讀寫等常用功能
    的頭像 發(fā)表于 06-12 18:12 ?1665次閱讀
    鴻蒙開發(fā)<b class='flag-5'>文件</b>管理:【@ohos.fileio (<b class='flag-5'>文件</b>管理)】

    使用ESP32-S3開發(fā)板http post請(qǐng)求發(fā)送SD卡上的大文件,如何循環(huán)邊讀取文件邊分塊發(fā)送文件呢?

    您和,我準(zhǔn)備使用ESP32-S3開發(fā)板http post請(qǐng)求發(fā)送SD卡上的大文件,但是使用esp_http_client_set_post_field的buffer太小,內(nèi)存不能一次性申請(qǐng)?zhí)螅?qǐng)問
    發(fā)表于 06-06 06:19
    主站蜘蛛池模板: 四虎新地址 | 自拍偷拍福利视频 | 色噜噜狠狠成人影院 | 欧日韩美香蕉在线观看 | 三浦理惠子中文在 | 72种姿势欧美久久久久大黄蕉 | 国产美女一级ba大片免色 | 91在线电影 | 国产亚洲精品成人a在线 | 最新国产精品视频免费看 | 欧美日韩性大片 | 日本加勒比视频在线观看 | 夜色321看片资源站 夜色sese | 5252a我爱haose01亚洲 | 美女扒开尿口给男人捅 | 四虎看黄| 亚洲一级影院 | 中文字幕网资源站永久资源 | 84pao强力永久免费高清 | 丁香婷婷色 | 男同小黄文 | 69国产成人精品午夜福中文 | 久久久久久久久久久9精品视频 | 国产精品高清久久久久久久 | 婷婷网五月天天综合天天爱 | 日本x色视频 | 男人女人真曰批视频播放 | 日本aaaaa毛片动漫 | 来啊mm影院亚洲mm影院 | 亚洲香蕉久久一区二区三区四区 | 小毛片在线观看 | 黑色丝袜美美女被躁视频 | 一级看片免费视频 | 日本黄色xxxx| 日本中文在线三级在线播放 | 久久精品国产精品亚洲毛片 | 日韩欧美中文字幕在线播放 | 久久免费视频2 | 欧美一区二区视频 | 天天射天天爱天天干 | 香蕉婷婷 |