共計 2006 個字符,預計需要花費 6 分鐘才能閱讀完成。
本篇文章為大家展示了 Serverless 怎樣構建無服務器的圖片分類系統,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
前 言
下面將介紹一種新的設計模式:基于事件的實時數據處理。為了更形象地描述,我們以圖片分類為例,先介紹通過 APIG 觸發器如何構建一個圖片分類的 Web 應用,再介紹通過 OBS 觸發器如何構造一個實時的圖片分類系統。
Serverless 優勢
相比于傳統的架構,無服務器架構具有如下優點:
1. 無需關注任何服務器,只需關注核心業務邏輯,提高開發和運維效率;
2. 事件觸發,靈活擴展;
3. 函數運行隨業務量彈性伸縮,按需付費,執行才計費,對于負載波峰波谷非常明顯的場景可以減少大量成本;
4. 通過簡單的配置即可連通函數工作流和其它各云服務,甚至云服務和云服務;
構建無服務器的圖片分類 Web 應用
像以往的文章介紹的那樣,serverless 很擅長構建一個 Web 應用,如下圖,該系統會將用戶上傳的圖片進行分類,并打上類別標簽。
我們可以通過函數工作流服務來快速構建這個系統,并且完全無需關注服務器,且彈性伸縮運行、按需計費。
創建函數,在函數中調用華為云圖片分析服務的圖片標簽接口,給圖片打標簽分類。再為該函數配置一個 APIG 觸發器,這樣便可以對外提供一個圖片分類的 API,最后部署前端頁面到 OBS,托管為靜態網站,從而構建出一個完整的圖片分類的無服務器 Web 應用。頁面調用 API,他會自動觸發函數執行,而開發者編寫的函數只需實現接收到圖片之后如何處理圖片的邏輯即可,最后將結果返回給頁面。
接下來,我們將介紹如何完整地將此無服務器 Web 應用構建出來。
1. 準備工作
進入華為云圖片檢測服務,申請開通圖片檢測服務的圖片標簽功能,成功申請后便可以調用圖片標簽接口了。
2. 構建后端程序
進入函數工作流服務,選擇模板“圖片打標簽 Web 后端”,創建函數。函數創建完成之后,為其配置具有 IAM 訪問權限的委托,因為本函數代碼中獲取用戶的 ak、sk 需要擁有訪問 IAM 的權限。
創建成功后,API 的 URL 可以在函數詳情頁面的“觸發器”欄看到。
至此,我們就成功地構建了一個無服務器的圖片分類 API。
3. 搭建前端頁面
為了更方便地搭建前端頁面,我們提供了對應的函數模板實現快速構建前端頁面。選擇模板“圖片打標簽 Web 前端”,創建函數,其中自定義數據 REST_API 中設置上一步創建的 API URL,創建完成后,函數詳情頁面的“觸發器”欄中的 URL 就是頁面的瀏覽器訪問地址。
至此,我們就成功地構建了一個無服務器的圖片分類 Web 應用。接下來,我們將介紹另一種場景。
構建事件觸發的實時圖片分類系統
本文接下來將具體介紹事件觸發的實時數據處理場景,考慮下面場景,用戶上傳圖片到 OBS 桶中,需要自動執行圖片分類,并按照類別轉儲到另一個桶的不同目錄下。比如下面這個例子,上傳一張企鵝圖片到一個桶,圖片就會自動轉儲到另一個桶對應的 penguins、seabird、bird 目錄下。
我們可以通過函數工作流服務來快速構建這個系統,并且完全無需關注服務器,且彈性伸縮運行、按需計費。
創建函數,在函數中調用華為云圖片分析服務的圖片標簽接口,給圖片打標簽分類。再為該函數配置一個 OBS 觸發器,監控桶的 POST 事件,當向該桶上傳一個文件時,便會自動觸發函數執行,從而實現一個基于事件觸發的無服務器系統。用戶向桶中上傳一張圖片,它會自動觸發函數執行,而開發者編寫的函數只需實現從桶中下載圖片并分類轉儲的邏輯即可。
接下來,我們將介紹如何完整地將此事件觸發的圖片分類系統構建出來。
準備工作
1. 申請開通圖像識別服務“圖像標簽”功能
2. 進入對象存儲服務(OBS)服務,創建兩個桶,一個用于接收待分類的圖片(source),一個用于存儲分類后的圖片(result),并將桶的“桶策略”設為公共讀寫。
創建函數
1. 進入函數工作流服務創建函數頁面,選擇“圖片實時分類(按圖片類型)”函數模板,該模板已為您提供本案例的代碼。
2. 設置環境變量 result_bucket 為存儲分類后圖片的桶的名稱(result)
3. 配置 OBS 觸發器,桶選擇接受待分類圖片的桶(source),事件選擇 post。當向桶中上傳新圖片時,會觸發函數執行。
4. 點擊創建,創建函數和觸發器。
配置函數
1. 進入函數詳情頁面,進入“配置”標簽,給函數設置一個具有訪問 IAM 和 OBS 權限的委托,使函數能夠獲取到用戶的 AK、SK,并訪問 OBS 桶資源。
2. 保存配置
測試函數
1. 向接收待分類圖片的桶(source)中上傳一張圖片
2. 查看存儲分類結果的桶(result)中的文件,會發現圖片存儲到了對應類別的目錄下。
上述內容就是 Serverless 怎樣構建無服務器的圖片分類系統,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。