函數工作流(FunctionGraph,FGS)是一項基於事件驅動的函數托管計算服務,托管函數具備以毫秒級彈性伸縮、免運維、高可靠的方式運行。通過函數工作流,開發者無需配置和管理服務器,只需關注業務邏輯,編寫函數代碼,以無服務器的方式構建應用,便能開發出一個彈性高可用的后端系統,並按實際運行消耗的資源計費。極大地提高了開發和運維效率,減小了運作成本。
本文我們將介紹如何通過雲函數服務快速構建一個無服務的圖片鑒黃web應用,如下圖,該應用接收用戶上傳的圖片,並對圖片進行分析,判斷是否為色情圖片。
試想,如果我們通過傳統的模式開發此應用,需要如何開發?
即使是基於現在的雲平台,我們也仍需要購買雲服務器,關注其規格、鏡像、網絡等各指標的選型和運維,然后在開發過程中可能還需要考慮與其他雲服務的集成使用問題,使代碼中耦合大量非業務代碼,並且服務器等資源也並非是按需的,可能會造成大量多余的費用。
現在我們可以通過函數工作流服務來快速構建這個系統,並且完全無需關注服務器,且按需運行,如圖:
創建函數,在函數中調用華為雲內容檢測服務提供的圖片鑒黃接口,實現圖片鑒黃功能,並為該函數配置一個APIG觸發器,對外提供圖片鑒黃的API,從而構建出一個完整的圖片鑒黃無服務系統。然后將web頁面的靜態資源部署在對象存儲服務(OBS)中,用戶可以直接從OBS訪問前端頁面。用戶上傳圖片時,頁面調用前面構建的圖片鑒黃API,他會自動觸發函數執行,而開發者編寫的函數只需實現接收到圖片之后如何處理圖片的邏輯(調用內容檢測服務服務)即可,最后將結果返回給前端頁面。至此,我們就構建了一個完整的無服務圖片鑒黃web應用。
現在,我們將介紹如何端到端地將此無服務應用構建出來,詳細教程可以參考:http://functiongraph-tutorial.obs-website.cn-north-1.myhwclouds.com/#/porn-image-analyse。
后端系統搭建:
進入函數服務頁面的圖片鑒黃模板,該模板已經提供了本應用中函數的代碼,按照代碼注釋中的指示創建函數之后,就成功搭建了本應用的后端系統,為函數所創建的APIG觸發器會提供一個調用該后端函數的HTTP(s) API,供外部系統(如前端頁面)調用。
前端頁面搭建:
前端的展示形式有很多,這里我們提供了一份Demo供大家學習參考,可以通過上面的詳細教程將前端代碼包部署到OBS上,快速構建一個單頁Web應用(SPA)。然后調用上一步后端提供的接口,連通后端系統,完成整個無服務圖片鑒黃Web應用的構建。
總結:
通過基於函數工作流的無服務架構和傳統架構的對比,我們可以看到其具有如下優點:
1. 無需關注任何服務器,只需關注核心業務邏輯;
2. 函數運行隨業務量彈性伸縮,按需付費,執行才計費,低成本;
3. 可以通過簡單的配置連通函數工作流和其它雲服務,甚至雲服務和雲服務,比如本例中只需創建一個APIG觸發器便可完成API網關和函數工作流的連接,然后在函數中調用內容檢測服務的鑒黃接口,那么函數就像一個粘合劑一樣將兩個雲服務連接在一起。
歡迎體驗!