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

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

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

真正的按需計(jì)費(fèi)-函數(shù)工作流 FunctionGraph實(shí)戰(zhàn),5分鐘搭建圖片壓縮應(yīng)用

禿頭也愛(ài)科技 ? 來(lái)源:禿頭也愛(ài)科技 ? 作者:禿頭也愛(ài)科技 ? 2022-11-21 20:46 ? 次閱讀

背景介紹

??互聯(lián)網(wǎng)時(shí)代,各類(lèi)app,小程序?yàn)槿藗兊纳?,辦公,學(xué)習(xí),休閑,娛樂(lè)提供著便利,在今年8月31日中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心發(fā)布的第50次《中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》中顯示,截至2022年6月我國(guó)網(wǎng)民規(guī)模為10.51億,網(wǎng)民人均每周上網(wǎng)時(shí)長(zhǎng)為29.5個(gè)小時(shí)。由此可見(jiàn)互聯(lián)網(wǎng)市場(chǎng)的巨大。

??軟件應(yīng)用提供商不斷推出各種滿足人們需求的應(yīng)用,以搶占市場(chǎng)先機(jī),時(shí)有大火的應(yīng)用進(jìn)入人們的新寵,不知哪一個(gè)將成為下一匹殺出的黑馬。而對(duì)于一個(gè)“合格”的應(yīng)用來(lái)說(shuō),穩(wěn)定性和可用性是需要達(dá)到的最基礎(chǔ)的要求。對(duì)于部署在服務(wù)器上的應(yīng)用,如何正常運(yùn)行以為客戶提供穩(wěn)定的服務(wù),近些年出現(xiàn)諸如負(fù)載均衡,微服務(wù)等計(jì)算機(jī)技術(shù),這些技術(shù)對(duì)于訪問(wèn)量比較穩(wěn)定或者浮動(dòng)范圍不是特別大的應(yīng)用來(lái)說(shuō)能夠達(dá)到很好的效果。但是有些業(yè)務(wù)場(chǎng)景,應(yīng)用的訪問(wèn)量并不能如愿的維持穩(wěn)定,比如說(shuō)電商網(wǎng)站在促銷(xiāo)活動(dòng)期間的訪問(wèn)量可能是平時(shí)的10倍甚至幾十倍,上百倍。如果為了應(yīng)對(duì)短期的井噴式訪問(wèn)而增加應(yīng)用服務(wù)部署的服務(wù)器數(shù)量,是一種不會(huì)出錯(cuò)的解決辦法,但對(duì)于大部分時(shí)間都處于正常訪問(wèn)量而少部分時(shí)間是激增訪問(wèn)量的應(yīng)用來(lái)說(shuō),這種做法無(wú)疑是一種浪費(fèi),對(duì)于應(yīng)用提供商也是不小的成本投入。另外,對(duì)于井噴式訪問(wèn)量的估算也是一項(xiàng)比較難以保證效果的工作,估算超過(guò)實(shí)際訪問(wèn)量是一種資源的浪費(fèi)(提前按估算量準(zhǔn)備的服務(wù)器,以及部署和運(yùn)維應(yīng)用的工作投入),估算少于實(shí)際訪問(wèn)又會(huì)導(dǎo)致服務(wù)器超負(fù)荷運(yùn)行,應(yīng)用響應(yīng)延時(shí),甚至宕機(jī),從而影響客戶的使用感受。

1669034621019irlo4k57px

??那么有沒(méi)有一種服務(wù)能否實(shí)現(xiàn)讓軟件應(yīng)用運(yùn)行所需的資源,像用水用電一樣按需使用,按需付費(fèi)呢?這樣,軟件應(yīng)用提供商不用再為正常訪問(wèn)量時(shí)閑置的服務(wù)器買(mǎi)單,又會(huì)在訪問(wèn)量爆發(fā)性增長(zhǎng)時(shí)輕松應(yīng)對(duì)。

函數(shù)工作流 FunctionGraph

??函數(shù)工作流(FunctionGraph)是一項(xiàng)基于事件驅(qū)動(dòng)的函數(shù)托管計(jì)算服務(wù)。通過(guò)函數(shù)工作流,只需編寫(xiě)業(yè)務(wù)函數(shù)代碼并設(shè)置運(yùn)行的條件,無(wú)需配置和管理服務(wù)器等基礎(chǔ)設(shè)施,函數(shù)以彈性、免運(yùn)維、高可靠的方式運(yùn)行。此外,按函數(shù)實(shí)際執(zhí)行資源計(jì)費(fèi),不執(zhí)行不產(chǎn)生費(fèi)用。

FunctionGraph具有以下優(yōu)勢(shì):

  • 無(wú)服務(wù)器管理

??自動(dòng)運(yùn)行用戶代碼,用戶無(wú)需配置或管理服務(wù)器,專注于業(yè)務(wù)創(chuàng)新。

  • 高彈性

??根據(jù)請(qǐng)求的并發(fā)數(shù)量自動(dòng)調(diào)度資源運(yùn)行函數(shù),實(shí)現(xiàn)透明、準(zhǔn)確和實(shí)時(shí)的伸縮,應(yīng)付業(yè)務(wù)峰值的訪問(wèn)。

??用戶無(wú)需關(guān)心峰值和空閑時(shí)段的資源需要申請(qǐng)多少資源,系統(tǒng)根據(jù)請(qǐng)求的數(shù)量自動(dòng)擴(kuò)容/縮容。自動(dòng)負(fù)載均衡將請(qǐng)求分發(fā)到函數(shù)運(yùn)行實(shí)例。

  • 事件觸發(fā)

??通過(guò)事件觸發(fā)機(jī)制,集成多種云服務(wù)(SMN,OBS…),滿足不同場(chǎng)景需求,獲得高效的開(kāi)發(fā)體驗(yàn)。

??與云日志服務(wù)、云監(jiān)控服務(wù)對(duì)接,無(wú)需任何配置,即可查詢函數(shù)日志和監(jiān)控告警信息,快速排查故障。

1669034621561jgcmp7voq3

  • 高可用

??函數(shù)運(yùn)行實(shí)例出現(xiàn)異常,系統(tǒng)會(huì)啟動(dòng)新的實(shí)例處理后續(xù)的請(qǐng)求,故障函數(shù)實(shí)例占用資源將會(huì)回收使用。

  • 按量計(jì)費(fèi)

??根據(jù)代碼的調(diào)用次數(shù)和運(yùn)行時(shí)長(zhǎng)計(jì)費(fèi),代碼未運(yùn)行時(shí)不產(chǎn)生費(fèi)用。

16690346220024l1e9zsuiu

構(gòu)建無(wú)服務(wù)圖片壓縮應(yīng)用

??為方便讀者更近一步了解函數(shù)工作流 FunctionGraph,這里提供一個(gè)通過(guò)函數(shù)工作流快速構(gòu)建圖片壓縮應(yīng)用的實(shí)操體驗(yàn),幫您快速掌握FunctionGraph的使用,并對(duì)所涉及的配置功能有清晰認(rèn)識(shí)。

https://resource.idp.huawei.com/idpresource/nasshare/editor/image/202083103891/1_zh-cn_image_0000001337739268.png

架構(gòu)圖說(shuō)明:

在OBS服務(wù)中,創(chuàng)建兩個(gè)桶。

創(chuàng)建函數(shù),設(shè)置OBS觸發(fā)器。

用戶向其中一個(gè)桶上傳圖片。

觸發(fā)函數(shù)執(zhí)行,對(duì)圖片進(jìn)行壓縮處理。

函數(shù)將處理后的圖片上傳到指定桶中。

準(zhǔn)備工作

  1. []()創(chuàng)建OBS桶

??創(chuàng)建兩個(gè)OBS桶,登錄[對(duì)象存儲(chǔ)服務(wù)控制臺(tái)](https://storage.huaweicloud.com/obs/" \\o " ),按下圖創(chuàng)建桶,“your-bucket-input”用于上傳需要處理的圖像,“your-bucket-output”用于存儲(chǔ)處理后的圖像。

1669034622863lr1uvisn3d

  1. []()創(chuàng)建委托

??由于華為云各服務(wù)之間存在業(yè)務(wù)交互關(guān)系,一些云服務(wù)需要與其他云服務(wù)協(xié)同工作,需要您創(chuàng)建云服務(wù)委托,將操作權(quán)限委托給該服務(wù),讓該服務(wù)以您的身份使用其他云服務(wù),代替您進(jìn)行一些資源運(yùn)維工作。

??本實(shí)踐中,在創(chuàng)建函數(shù)前,您需要為函數(shù)設(shè)置擁有OBS訪問(wèn)權(quán)限的委托,登錄[統(tǒng)一身份認(rèn)證服務(wù)控制臺(tái)](https://console.huaweicloud.com/iam/" \\o " ),按下圖創(chuàng)建委托(至少擁有對(duì)象存儲(chǔ)服務(wù)的權(quán)限:OBS Administrator)。

16690346232751htwgirg7e

構(gòu)建程序

本例提供了實(shí)現(xiàn)圖片壓縮功能的程序包,用戶可以下載詳情請(qǐng)參照示例代碼、學(xué)習(xí)使用。

創(chuàng)建函數(shù)

登錄函數(shù)工作流控制臺(tái),創(chuàng)建函數(shù),函數(shù)名稱自定義,委托選擇創(chuàng)建委托中創(chuàng)建的委托,運(yùn)行時(shí)選擇“Python3.6”。

1669034623677c52a32t5mq

輸入代碼

下載[示例代碼](https://codelabs.developer.huaweicloud.com/codelabs/samples/f09ebb2c80664f62bc424b22d2e95c2e/view-code/91982ead208c11ea8b68fa163e6e3ea0" \\o " ),粘貼至函數(shù)的index.py文件中,如圖所示。

16690346240014p3d1gpl85

添加依賴包

為函數(shù)添加pillow-7.1.2 依賴包,pillow-7.1.2 依賴包是Python圖像處理庫(kù),支持多種文件格式,并提供了強(qiáng)大的圖像處理和圖形處理能力。

1669034624320nmxr91n9nn

配置函數(shù)

常規(guī)設(shè)置

內(nèi)存選擇:“256”

超時(shí)時(shí)間輸入:“40”

16690346246038p6n30vhls

環(huán)境變量

鍵obs_output_bucket: index.py文件中定義的存放輸出圖片的OBS桶參數(shù),值your-bucket-output: 創(chuàng)建OBS桶中創(chuàng)建的存放輸出圖片的OBS桶;

鍵obs_server: index.py文件中定義的存放輸出圖片的OBS桶的地址參數(shù),值obs.region.myhuaweicloud.com。

1669034624941xqnwf7658r

添加事件源

OBS桶及函數(shù)創(chuàng)建以后,可以為函數(shù)添加事件源,添加OBS事件源是通過(guò)創(chuàng)建OBS觸發(fā)器實(shí)現(xiàn)的。當(dāng)用戶將一張照片上傳到存儲(chǔ)桶時(shí),OBS存儲(chǔ)桶調(diào)用FunctionGraph函數(shù),實(shí)現(xiàn)讀取圖像和創(chuàng)建照片縮略圖。OBS對(duì)象操作觸發(fā)函數(shù)的過(guò)程請(qǐng)參考[使用](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0205.html" \\o " )[OBS](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0205.html" \\o " )[觸發(fā)器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0205.html" \\o " )。

如下圖所示,桶選擇創(chuàng)建OBS桶中創(chuàng)建的“your-bucket-input”桶。事件選擇“Post”、“Put”。

16690346252068rxs53jcco

圖片處理

當(dāng)圖片上傳或更新至your-bucket-input桶時(shí),會(huì)生成事件,觸發(fā)函數(shù)運(yùn)行,將上傳圖片壓縮,保存在your-bucket-output中。

上傳圖片生成事件

登錄[對(duì)象存儲(chǔ)服務(wù)控制臺(tái)](https://storage.huaweicloud.com/obs/" \\o " ),進(jìn)入your-bucket-input桶對(duì)象界面,上傳image.jpg圖片,如下圖所示。

1669034625527j4l365c7f8

可以看到原始圖片image.jpg大小超過(guò)28KB。

觸發(fā)函數(shù)執(zhí)行

上傳圖片至your-bucket-input桶,OBS生成事件觸發(fā)函數(shù)運(yùn)行,將圖片壓縮,壓縮后的圖片存放在your-bucket-output桶中??梢栽诤瘮?shù)詳情頁(yè)日志頁(yè)簽查看函數(shù)運(yùn)行日志,如下圖所示。

1669034625812ujdqx0dabp

圖片壓縮驗(yàn)證

進(jìn)入your-bucket-output桶對(duì)象界面,可以看到壓縮后的圖片image-thumbnail.jpg,圖片大小小于8KB,實(shí)現(xiàn)了對(duì)圖片的壓縮,如下圖所示。

16690346263142w7ao1qvy2

總結(jié)

通過(guò)上面端到端構(gòu)建一個(gè)完整的圖片壓縮應(yīng)用,我們可以發(fā)現(xiàn)FunctionGraph的架構(gòu)具有如下優(yōu)點(diǎn):

1.無(wú)需關(guān)注任何服務(wù)器,只需關(guān)注核心業(yè)務(wù)邏輯,5分鐘快速構(gòu)建后端系統(tǒng)并上線,極大地提高了開(kāi)發(fā)效率。

2.函數(shù)運(yùn)行隨業(yè)務(wù)量彈性伸縮,按需付費(fèi),當(dāng)創(chuàng)建的函數(shù)沒(méi)有執(zhí)行時(shí),不計(jì)費(fèi)。

3.可以通過(guò)簡(jiǎn)單的配置連通函數(shù)工作流和其它云服務(wù),甚至云服務(wù)和云服務(wù),比如本例中只需創(chuàng)建一個(gè)OBS觸發(fā)器便可完成OBS和函數(shù)工作流的連接,然后在函數(shù)中對(duì)圖片進(jìn)行壓縮,那么函數(shù)就像一個(gè)粘合劑一樣將兩個(gè)云服務(wù)連接在一起。

審核編輯 黃昊宇

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

    關(guān)注

    3

    文章

    4256

    瀏覽量

    62223
  • 工作流
    +關(guān)注

    關(guān)注

    0

    文章

    42

    瀏覽量

    12405
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于工作流技術(shù)的廣州電信本地計(jì)費(fèi)系統(tǒng)改造

    對(duì)廣州電信本地計(jì)費(fèi)系統(tǒng)進(jìn)行了改造。通常情況下,由于電信系統(tǒng)一般都比較復(fù)雜,對(duì)工作流的性能、穩(wěn)定性、靈活性和安全性都提出了很高的要求,但是目前的計(jì)費(fèi)運(yùn)行過(guò)程仍然依賴人手提交程序,直接影響了計(jì)費(fèi)
    發(fā)表于 04-24 09:20

    【MPS最佳實(shí)踐】媒體工作流轉(zhuǎn)碼

    自定義轉(zhuǎn)碼模板(按需)自定義水印模板(按需)操作步驟添加媒體Bucket創(chuàng)建媒體工作流,在工作流中可以靈活配置截圖、轉(zhuǎn)碼、轉(zhuǎn)封裝、水印、加密、剪輯等功能。CDN加速域名(非必填項(xiàng)):如
    發(fā)表于 02-28 11:15

    基于案例推理的工作流異常處理研究

    對(duì)工作流的異常和案例推理(Case - Based Reasoning,簡(jiǎn)稱CBR)的機(jī)制進(jìn)行了介紹,給出了一個(gè)應(yīng)用CBR 技術(shù)進(jìn)行異常處理的工作流模型,并研究了應(yīng)用CBR 方法處理工作流異常的機(jī)制。
    發(fā)表于 06-15 10:20 ?14次下載

    企業(yè)工作流機(jī)模型的設(shè)計(jì)

    工作流機(jī)是一個(gè)為工作流實(shí)例的執(zhí)行提供運(yùn)行服務(wù)環(huán)境的軟件或引擎。它是工作流執(zhí)行服務(wù)的核心,是執(zhí)行企業(yè)經(jīng)營(yíng)過(guò)程的業(yè)務(wù)操作系統(tǒng)的內(nèi)核,它的運(yùn)轉(zhuǎn)也就帶動(dòng)了企業(yè)的經(jīng)營(yíng)活
    發(fā)表于 06-16 09:45 ?30次下載

    OA系統(tǒng)中工作流引擎的設(shè)計(jì)

    本文首先介紹了工作流供理系統(tǒng)的概念及其體系結(jié)構(gòu)模型?;赪eb 平臺(tái),針對(duì)模型中工作流引擎模塊的設(shè)計(jì)提出了一個(gè)行之有效解決方案。關(guān)鍵字:工作流; 工作流引擎; UML; 用
    發(fā)表于 06-16 11:31 ?45次下載

    基于UML的工作流引擎的設(shè)計(jì)與研究

    由于工作流技術(shù)具有在異構(gòu)環(huán)境中處理復(fù)雜事務(wù)的能力,所以在科學(xué)研究、電子政務(wù)和商務(wù)等方面引起了廣泛的關(guān)注,工作流引擎是工作流管理系統(tǒng)的核心,本文以工作流管理聯(lián)盟的工
    發(fā)表于 08-19 10:47 ?23次下載

    動(dòng)態(tài)工作流技術(shù)的應(yīng)用研究

    在基于工作流的應(yīng)用系統(tǒng)中,業(yè)務(wù)過(guò)程的不可預(yù)見(jiàn)性往往會(huì)要求工作流能夠適應(yīng)不斷改變的業(yè)務(wù)環(huán)境,而傳統(tǒng)的工作流技術(shù)通常對(duì)業(yè)務(wù)動(dòng)態(tài)可變的支持度不夠。本文在傳統(tǒng)工作流
    發(fā)表于 01-15 14:08 ?7次下載

    輕量級(jí)工作流引擎架構(gòu)設(shè)計(jì)

    為了克服傳統(tǒng)工作流管理系統(tǒng)的不足,設(shè)計(jì)了工作流管理型系統(tǒng)的原型體系結(jié)構(gòu),搭建了輕量級(jí)工作流引擎的核心架構(gòu),詳細(xì)地介紹了輕量級(jí)工作流引擎各個(gè)組
    發(fā)表于 04-12 16:15 ?0次下載
    輕量級(jí)<b class='flag-5'>工作流</b>引擎架構(gòu)設(shè)計(jì)

    工作流環(huán)境下組件的開(kāi)發(fā)

    本文基于對(duì)工作流環(huán)境下組件的開(kāi)發(fā)為目的,采用工作流技術(shù)與組件技術(shù)相結(jié)合的方法,討論構(gòu)建工作流組件的方法。通過(guò)在開(kāi)發(fā)中結(jié)合Ajax技術(shù),使之克服傳統(tǒng)的Web應(yīng)用中同步交換問(wèn)題
    發(fā)表于 12-17 11:01 ?0次下載
    <b class='flag-5'>工作流</b>環(huán)境下組件的開(kāi)發(fā)

    基于行為特征的語(yǔ)義工作流修正算法

    工作流修正是工作流重用的重要任務(wù),目前在基于工作流的可重用片段-stream的語(yǔ)義工作流修正中,當(dāng)工作流stream庫(kù)中不存在與檢索語(yǔ)義
    發(fā)表于 12-14 15:50 ?0次下載
    基于行為特征的語(yǔ)義<b class='flag-5'>工作流</b>修正算法

    時(shí)候?qū)⒏咔?b class='flag-5'>工作流轉(zhuǎn)換為4K/8K工作流的TICO輕量級(jí)壓縮技術(shù)介紹

    intoPIX的產(chǎn)品和營(yíng)銷(xiāo)經(jīng)理Jean-Baptiste Lorent描述了TICO輕量級(jí)壓縮,非常適合將高清工作流轉(zhuǎn)換為4K / 8K工作流
    的頭像 發(fā)表于 11-22 07:08 ?4502次閱讀

    劉潤(rùn)5分鐘商學(xué)院之實(shí)戰(zhàn)篇電子版下載

    劉潤(rùn)5分鐘商學(xué)院之實(shí)戰(zhàn)篇電子版下載
    發(fā)表于 09-03 16:31 ?0次下載

    聯(lián)影磁共振參數(shù)工作流卡介紹

    工作流卡提供了臨床工作應(yīng)用相關(guān)的參數(shù),主要分為三部,校準(zhǔn)工作流、掃描工作流以及加載工作流,此篇
    的頭像 發(fā)表于 05-19 16:07 ?4079次閱讀
    聯(lián)影磁共振參數(shù)<b class='flag-5'>工作流</b>卡介紹

    體驗(yàn)華為云 Serverless?FunctionGraph,一分鐘上線應(yīng)用

    使用 FunctionGraph 可以無(wú)需預(yù)先購(gòu)買(mǎi)計(jì)算資源,直接上傳代碼上線應(yīng)用,并可以自動(dòng)彈性伸縮應(yīng)對(duì)業(yè)務(wù)流量。FunctionGraph 按需計(jì)費(fèi),目前免費(fèi)調(diào)用 100 萬(wàn)次。 一
    的頭像 發(fā)表于 09-02 01:18 ?450次閱讀
    體驗(yàn)華為云 Serverless?<b class='flag-5'>FunctionGraph</b>,一<b class='flag-5'>分鐘</b>上線應(yīng)用

    華為云函數(shù)工作流:引領(lǐng)未來(lái)無(wú)服務(wù)器計(jì)算時(shí)代

    在當(dāng)今數(shù)字化飛速發(fā)展的時(shí)代,企業(yè)和個(gè)人對(duì)于計(jì)算資源的需求越來(lái)越高,但傳統(tǒng)的服務(wù)器架構(gòu)帶來(lái)的管理成本和資源浪費(fèi)問(wèn)題也愈發(fā)凸顯。為解決這一難題,華為云引領(lǐng)著無(wú)服務(wù)器計(jì)算的浪潮,推出了函數(shù)工作流
    的頭像 發(fā)表于 05-27 10:50 ?288次閱讀
    華為云<b class='flag-5'>函數(shù)</b><b class='flag-5'>工作流</b>:引領(lǐng)未來(lái)無(wú)服務(wù)器計(jì)算時(shí)代