關(guān)鍵詞:云計(jì)算;消息中間件;彈性伸縮;圖像處理
中圖分類號(hào):TP391.41TP212 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1001-5922(2024)12-0162-04
隨著科技發(fā)展,圖像分析處理在大規(guī)模數(shù)據(jù)處理中占據(jù)關(guān)鍵地位[1]?;谠破脚_(tái)的分布式并行圖像處理隨著云計(jì)算興起成為研究焦點(diǎn),其中Hadoop Ma?pReduce框架實(shí)現(xiàn)了云端分布式圖像處理系統(tǒng)[2]。為提升性能,利用Spark Streaming處理實(shí)時(shí)數(shù)據(jù)流[3],并通過Kafka消息隊(duì)列分解任務(wù),實(shí)現(xiàn)流式處理,提升性能與資源利用率[4]。同時(shí),基于Serverless架構(gòu)的圖像處理框架利用FaaS實(shí)現(xiàn)計(jì)算資源按需彈性使用,顯著提高系統(tǒng)吞吐量與并發(fā)處理能力[5]。本文借鑒上述技術(shù),提出基于消息隊(duì)列與云函數(shù)的高性能彈性圖像處理系統(tǒng)架構(gòu),以解決傳統(tǒng)系統(tǒng)的效率與成本問題,并通過實(shí)驗(yàn)驗(yàn)證其有效性與可行性。
1技術(shù)背景及可行性分析
1.1圖像處理技術(shù)
圖像處理技術(shù)通過對(duì)圖像信號(hào)的操作滿足特定需求[6],如圖像增強(qiáng)(去噪、銳化等改善視覺效果)、圖像復(fù)原(去模糊、超分辨等恢復(fù)真實(shí)信息)、圖像壓縮(如JPEG用于存儲(chǔ)和傳輸)及計(jì)算機(jī)視覺(目標(biāo)檢測(cè)、圖像分類等信息提?。?。由于涉及大規(guī)模數(shù)據(jù)和計(jì)算密集任務(wù),圖像處理需應(yīng)對(duì)高效性和實(shí)時(shí)性挑戰(zhàn)。本文的處理流程包括圖像增強(qiáng)、目標(biāo)檢測(cè)、圖像分割及識(shí)別分類,全部通過Python調(diào)用AI模型完成。
1.2消息中間件技術(shù)
消息中間件通過異步消息傳遞實(shí)現(xiàn)系統(tǒng)間松耦合集成[7-8],具有高可用性,適用于分布式流計(jì)算環(huán)境。高性能中間件(如RocketMQ、Kafka、RabbitMQ)在生產(chǎn)者與消費(fèi)者間提供緩沖,支持無侵入數(shù)據(jù)處理[9],并具備負(fù)載均衡、削峰填谷、系統(tǒng)解耦等優(yōu)勢(shì),適用于高并發(fā)、高可用、可擴(kuò)展的分布式系統(tǒng)。本文利用消息中間件分發(fā)圖像處理任務(wù),實(shí)現(xiàn)多任務(wù)并行處理,提升資源利用率。
1.3云函數(shù)彈性計(jì)算技術(shù)
彈性計(jì)算通過虛擬化技術(shù)將計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)等資源池化為按需服務(wù)[10-11],避免大量投入,是大規(guī)模圖像處理系統(tǒng)動(dòng)態(tài)擴(kuò)展的理想平臺(tái)。本文結(jié)合消息隊(duì)列中間件與彈性計(jì)算[12],構(gòu)建高性能、彈性可擴(kuò)展的圖像處理系統(tǒng)。該系統(tǒng)利用消息隊(duì)列分解與調(diào)度圖像處理任務(wù),平滑流量并提升并發(fā)能力;同時(shí)通過云平臺(tái)的函數(shù)計(jì)算服務(wù)實(shí)現(xiàn)彈性伸縮,保障處理能力,節(jié)省成本并提高性能與資源利用效率。
2方案研究
2.1現(xiàn)有方案簡(jiǎn)介
系統(tǒng)現(xiàn)有架構(gòu)方案如圖1所示。
業(yè)務(wù)服務(wù)平臺(tái)通過B/S架構(gòu)的Web應(yīng)用面向客戶端提供服務(wù)[13],起承上啟下作用??蛻舳送ㄟ^網(wǎng)關(guān)將數(shù)據(jù)上傳至平臺(tái),平臺(tái)調(diào)用圖像分析處理平臺(tái)完成分析后,將結(jié)果分別存儲(chǔ)至業(yè)務(wù)數(shù)據(jù)庫(kù)和圖像數(shù)據(jù)庫(kù)。圖像分析處理平臺(tái)接收業(yè)務(wù)服務(wù)平臺(tái)請(qǐng)求,處理圖像數(shù)據(jù)后上傳至圖像數(shù)據(jù)庫(kù),與業(yè)務(wù)數(shù)據(jù)庫(kù)解耦,降低系統(tǒng)耦合度。
2.2基于消息中間件及云函數(shù)的圖像分析處理平臺(tái)方案
針對(duì)現(xiàn)有圖像分析系統(tǒng)計(jì)算密集且存儲(chǔ)占用大的特性[14-15],本文提出由消息中間件、云函數(shù)及圖像分析處理模塊組成的圖像分析平臺(tái)。具體職責(zé)分工如下:消息中間件接收與緩存任務(wù)隊(duì)列消息,并將處理結(jié)果發(fā)送至指定隊(duì)列;云函數(shù)在云端運(yùn)行,具備彈性擴(kuò)容能力,負(fù)責(zé)激活圖像分析處理模塊進(jìn)行圖像處理;圖像分析處理模塊加載圖像數(shù)據(jù),執(zhí)行圖像增強(qiáng)、目標(biāo)檢測(cè)、分類等操作[16-18]。
3圖像分析處理平臺(tái)設(shè)計(jì)實(shí)現(xiàn)
基于本文提出的方案,圖像分析處理平臺(tái)架構(gòu)如圖2所示。
本方案采用消息隊(duì)列中間件[19]與云函數(shù)相結(jié)合的方式完成圖像分析任務(wù)的拆分調(diào)度和彈性伸縮,其主要由WebAPI接口服務(wù)、任務(wù)預(yù)處理服務(wù)、圖像處理服務(wù)、結(jié)果后處理服務(wù)和業(yè)務(wù)回調(diào)服務(wù)構(gòu)成。圖像請(qǐng)求數(shù)據(jù)時(shí)序圖如圖3所示。
每個(gè)服務(wù)通過消費(fèi)Topic消息相互觸發(fā),云函數(shù)監(jiān)聽消息隊(duì)列任務(wù)長(zhǎng)度,彈性調(diào)用實(shí)例處理圖片。具體流程如下:WebAPI接口服務(wù)接收業(yè)務(wù)服務(wù)平臺(tái)的批量處理請(qǐng)求并發(fā)送預(yù)處理消息至消息隊(duì)列;任務(wù)預(yù)處理服務(wù)通過多線程拉取原圖并預(yù)處理后,將任務(wù)分解為多個(gè)子任務(wù),發(fā)送圖像處理消息;圖像處理服務(wù)調(diào)用GPU服務(wù)器并行處理圖像后發(fā)送結(jié)果處理消息;結(jié)果后處理服務(wù)監(jiān)聽同一請(qǐng)求的批量任務(wù)結(jié)果,完成后發(fā)送回調(diào)服務(wù)消息;最后業(yè)務(wù)回調(diào)服務(wù)通過http回調(diào)將結(jié)果持久化存儲(chǔ)。該設(shè)計(jì)通過消息隊(duì)列實(shí)現(xiàn)任務(wù)異步解耦,利用云函數(shù)彈性擴(kuò)縮容,平滑流量并提高吞吐量,同時(shí)根據(jù)任務(wù)量動(dòng)態(tài)分配資源,具備高性能、高可靠性、低成本和高擴(kuò)展性,顯著提升資源利用率。
3.1消息隊(duì)列中間件解決任務(wù)分解調(diào)度問題
圖像處理任務(wù)的分解是實(shí)現(xiàn)并行處理的關(guān)鍵。本設(shè)計(jì)通過消息隊(duì)列完成任務(wù)分解與調(diào)度,設(shè)置預(yù)處理、圖像處理、結(jié)果處理、單張結(jié)果回調(diào)和請(qǐng)求回調(diào)等5個(gè)主題消息。每個(gè)服務(wù)獨(dú)立處理上游消息并向下游發(fā)送消息,支持并行執(zhí)行。根據(jù)消費(fèi)速度和任務(wù)量,可快速調(diào)整消費(fèi)者數(shù)量,提升系統(tǒng)吞吐率?;谙⒌脑O(shè)計(jì)實(shí)現(xiàn)任務(wù)異步解耦和隊(duì)列緩沖,生產(chǎn)者與消費(fèi)者通過隊(duì)列轉(zhuǎn)發(fā)消息解耦,避免生產(chǎn)速率過高導(dǎo)致消息丟失。此消息驅(qū)動(dòng)模式平滑輸入流量,實(shí)現(xiàn)高吞吐量與低延遲,并結(jié)合彈性計(jì)算顯著提高資源利用率。
3.2彈性計(jì)算云函數(shù)解決任務(wù)堆積消費(fèi)延遲問題
彈性計(jì)算云函數(shù)是一種新型云服務(wù)模式,用戶只需編寫函數(shù)邏輯,資源管理及自動(dòng)擴(kuò)縮容由云平臺(tái)負(fù)責(zé),提升系統(tǒng)利用效率和性能。本文通過阿里彈性計(jì)算云函數(shù)實(shí)現(xiàn)系統(tǒng)彈性伸縮。圖片處理函數(shù)基于Docker鏡像部署在云函數(shù)平臺(tái),平臺(tái)根據(jù)任務(wù)量自動(dòng)調(diào)整實(shí)例數(shù)量,任務(wù)增加時(shí)擴(kuò)容,任務(wù)完成后釋放實(shí)例,從而有效提升系統(tǒng)性能與效率。
關(guān)鍵實(shí)現(xiàn)步驟如下:
(1)封裝圖片處理函數(shù)為docker鏡像,上傳部署至云函數(shù)平臺(tái);(2)WebAPI服務(wù)接收請(qǐng)求,發(fā)送預(yù)處理消息調(diào)用函數(shù)計(jì)算,傳入圖片參數(shù);(3)函數(shù)平臺(tái)收到消息,自動(dòng)生成新函數(shù)實(shí)例執(zhí)行處理任務(wù);(4)函數(shù)實(shí)例任務(wù)完成后自動(dòng)銷毀。
采用彈性計(jì)算云函數(shù)的自動(dòng)伸縮機(jī)制,系統(tǒng)可以根據(jù)實(shí)時(shí)任務(wù)動(dòng)態(tài)調(diào)整計(jì)算資源,既保證處理能力,又最小化資源成本。可有效提高整個(gè)系統(tǒng)的穩(wěn)定性、資源利用率以及并發(fā)吞吐性能。
4實(shí)驗(yàn)部分
4.1實(shí)驗(yàn)設(shè)計(jì)
為驗(yàn)證本文所設(shè)計(jì)方案的有效性,對(duì)3種功能處理模式進(jìn)行了對(duì)比實(shí)驗(yàn)。3種處理模式分別是:(1)串行處理。單機(jī)部署,單線程按順序處理所有圖片;(2)消息驅(qū)動(dòng)并行處理。多進(jìn)程部署處理函數(shù),并基于消息隊(duì)列并行調(diào)用進(jìn)行處理;(3)云函數(shù)彈性伸縮。在消息驅(qū)動(dòng)并行處理的基礎(chǔ)上啟用云函數(shù)自動(dòng)伸縮,將并行調(diào)用服務(wù)打包成docker鏡像,部署至阿里云函數(shù)計(jì)算,設(shè)置函數(shù)的實(shí)例并發(fā)度,通過消息隊(duì)列進(jìn)行驅(qū)動(dòng)觸發(fā)。在阿里云服務(wù)器上搭建了實(shí)驗(yàn)平臺(tái)。針對(duì)3種處理模式在1、2、5、10萬圖片量下分別進(jìn)行了性能和實(shí)驗(yàn)評(píng)估,通過阿里云監(jiān)控測(cè)試不同處理模式下的系統(tǒng)指標(biāo)。1、2、5、10萬張圖片的處理時(shí)間如表1所示。在3種處理模式下,并行處理相對(duì)于串行處理CPU利用率、系統(tǒng)負(fù)載和顯存利用率有了明顯提升,說明消息中間件的引入直接促進(jìn)了并行處理模式中資源利用率的提高,并且都保持了較好的穩(wěn)定性,云函數(shù)彈性模式和并行處理模式的CPU利用率和顯存利用率幾乎持平,說明云函數(shù)的引入并未增加系統(tǒng)的計(jì)算復(fù)雜度,保持了良好的系統(tǒng)擴(kuò)展性。
4.2結(jié)果與分析
3種處理模式在10萬圖片量下(1000個(gè)請(qǐng)求,每個(gè)請(qǐng)求100張圖片)的處理時(shí)間和成本比較如表2所示(一臺(tái)云服務(wù)器1年的價(jià)格按照5萬元計(jì)算成本)。
由表2可知,相比串行處理,消息驅(qū)動(dòng)的并行處理縮短了接近57%的處理時(shí)間。加入云函數(shù)彈性伸縮后,請(qǐng)求平均等待時(shí)間縮短了5倍以上。就處理成本而言,并行處理比串行處理也節(jié)省了57%左右,而彈性伸縮模式比串行模式也減少了近43%的成本。這是因?yàn)閺椥陨炜s能夠根據(jù)實(shí)時(shí)任務(wù)量動(dòng)態(tài)調(diào)整函數(shù)實(shí)例數(shù)量,避免資源浪費(fèi)。綜上所述,實(shí)驗(yàn)驗(yàn)證了所設(shè)計(jì)系統(tǒng)架構(gòu)能夠?qū)崿F(xiàn)高吞吐、低延遲和低成本的大規(guī)模圖像處理。
5結(jié)語
本文針對(duì)大規(guī)模圖像處理系統(tǒng)面臨的性能瓶頸與擴(kuò)展性問題,提出了一種基于消息隊(duì)列和云函數(shù)的高性能彈性伸縮處理系統(tǒng)架構(gòu)。主要通過消息驅(qū)動(dòng)設(shè)計(jì)實(shí)現(xiàn)任務(wù)異步解耦,平滑處理流量;通過云函數(shù)彈性伸縮保證處理能力的同時(shí)降低資源成本。實(shí)驗(yàn)結(jié)果證明,該系統(tǒng)架構(gòu)能夠大幅提升處理性能并實(shí)現(xiàn)按需彈性擴(kuò)展。研究成果對(duì)構(gòu)建海量圖像數(shù)據(jù)的實(shí)時(shí)處理系統(tǒng)具有重要意義。