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

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

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

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

禿頭也愛科技 ? 來源:禿頭也愛科技 ? 作者:禿頭也愛科技 ? 2022-11-21 20:46 ? 次閱讀

背景介紹

??互聯(lián)網(wǎng)時代,各類app,小程序為人們的生活,辦公,學習,休閑,娛樂提供著便利,在今年8月31日中國互聯(lián)網(wǎng)絡(luò)信息中心發(fā)布的第50次《中國互聯(lián)網(wǎng)絡(luò)發(fā)展狀況統(tǒng)計報告》中顯示,截至2022年6月我國網(wǎng)民規(guī)模為10.51億,網(wǎng)民人均每周上網(wǎng)時長為29.5個小時。由此可見互聯(lián)網(wǎng)市場的巨大。

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

1669034621019irlo4k57px

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

函數(shù)工作流 FunctionGraph

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

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

  • 無服務(wù)器管理

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

  • 高彈性

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

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

  • 事件觸發(fā)

??通過事件觸發(fā)機制,集成多種云服務(wù)(SMN,OBS…),滿足不同場景需求,獲得高效的開發(fā)體驗。

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

1669034621561jgcmp7voq3

  • 高可用

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

  • 按量計費

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

16690346220024l1e9zsuiu

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

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

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

架構(gòu)圖說明:

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

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

用戶向其中一個桶上傳圖片。

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

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

準備工作

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

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

1669034622863lr1uvisn3d

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

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

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

16690346232751htwgirg7e

構(gòu)建程序

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

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

登錄函數(shù)工作流控制臺,創(chuàng)建函數(shù),函數(shù)名稱自定義,委托選擇創(chuàng)建委托中創(chuàng)建的委托,運行時選擇“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圖像處理庫,支持多種文件格式,并提供了強大的圖像處理和圖形處理能力。

1669034624320nmxr91n9nn

配置函數(shù)

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

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

超時時間輸入:“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事件源是通過創(chuàng)建OBS觸發(fā)器實現(xiàn)的。當用戶將一張照片上傳到存儲桶時,OBS存儲桶調(diào)用FunctionGraph函數(shù),實現(xiàn)讀取圖像和創(chuàng)建照片縮略圖。OBS對象操作觸發(fā)函數(shù)的過程請參考[使用](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

圖片處理

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

上傳圖片生成事件

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

1669034625527j4l365c7f8

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

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

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

1669034625812ujdqx0dabp

圖片壓縮驗證

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

16690346263142w7ao1qvy2

總結(jié)

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

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

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

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

審核編輯 黃昊宇

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

    關(guān)注

    3

    文章

    4341

    瀏覽量

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

    關(guān)注

    0

    文章

    44

    瀏覽量

    12435
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    劉潤5分鐘商學院之實戰(zhàn)篇電子版下載

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

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

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

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

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

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

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

    GPU按需計費的優(yōu)勢

    GPU按需計費,是指用戶根據(jù)實際使用的GPU資源和時間進行費用結(jié)算,而非傳統(tǒng)的一次性購買或固定租賃模式。以下,是對GPU按需計費優(yōu)勢的總結(jié),由AI部落小編整理。
    的頭像 發(fā)表于 01-14 10:43 ?53次閱讀