詳解 Serverless 架構的 6 大應用場景

来源:https://www.cnblogs.com/88223100/archive/2022/09/01/Detailed-explanation-of-6-major-application-scenarios-of-Serverless-architecture.html
-Advertisement-
Play Games

Serverless 架構將成為未來雲計算領域重要的技術架構,將會被更多的業務所採納。進一步深究,Serverless 架構在什麼場景下有優秀的表現,在什麼場景下可能表現得並不是很理想呢?或者說,有哪些場景更適合 Serverless 架構呢? ...


 

 Serverless 架構將成為未來雲計算領域重要的技術架構,將會被更多的業務所採納。進一步深究,Serverless 架構在什麼場景下有優秀的表現,在什麼場景下可能表現得並不是很理想呢?或者說,有哪些場景更適合 Serverless 架構呢?

Serverless 架構的應用場景

 

Serverless 架構的應用場景通常是由其特性決定的,所支持的觸發器決定具體場景。如圖 1-1 所示,CNCF Serverless Whitepaper v1.0 描述的關於 Serverless 架構所適合的用戶場景如下。

 

    • 非同步併發,組件可獨立部署和擴展的場景。

    • 突發或服務使用量不可預測的場景。

    • 短暫、無狀態的應用,對冷啟動時間不敏感的場景。

    • 需要快速開發、迭代的業務。

                1-1 CNCF Serverless Whitepaper v1.0 描述的 Serverless 架構所適合的用戶場景

 

CNCF 除基於 Serverless 架構的特性給出 4 個適用的用戶場景之外,還結合常見的觸發器提供了詳細的例子。

 

  • 響應資料庫更改(插入、更新、觸發、刪除)的執行邏輯。

  • 對物聯網感測器輸入消息(如 MQTT 消息)進行分析。

  • 執行流處理(分析或修改動態數據)。

  • 數據單次提取、轉換和存儲需要在短時間內進行大量處理(ETL)。

  • 通過聊天機器人界面提供認知計算(非同步)。

  • 調度短時間內執行的任務,例如 CRON 或批處理的調用。

  • 機器學習和人工智慧模型。

  • 持續集成管道,按需為構建作業提供資源。

 

CNCF Serverless Whitepaper v1.0 基於 Serverless 架構的特點,從理論上描述了 Serverless 架構適合的場景或業務。雲廠商則站在自身業務角度來描述 Serverless 架構的典型應用場景。

 

通常情況下,當對象存儲作為 Serverless 相關產品觸發器時,典型的應用場景包括視頻處理、數據 ETL 處理等;API 網關更多會為用戶賦能對外的訪問鏈接以及相關聯的功能等,當 API 網關作為 Serverless 相關產品的觸發器時,典型的應用場景就是後端服務,包括 App 後端服務、網站後端服務甚至微信小程式等相關產品的後端服務。

 

一些智能音箱也會開放相關介面,這個介面也可以通過 API 網關觸發雲函數,獲得相應的服務等;除了對象存儲觸發以及 API 網關觸發,常見的觸發器還有消息隊列觸發器、Kafka 觸發器、日誌觸發器等。

 

1. Web 應用或移動應用後端

如果 Serverless 架構和雲廠商所提供的其他雲產品結合,開發者能夠構建可彈性擴展的移動應用或 Web 應用程式 ,輕鬆創建豐富的無伺服器後端。而且這些程式在多個數據中心可用。圖 1-2 所示為 Web 應用後端處理示例。

 

 

                                                                                          1-2 Web 應用後端處理示例

2.實時文件/數據處理

在視頻應用、社交應用等場景下,用戶上傳的圖片、音視頻往往總量大、頻率高,對處理系統的實時性和併發能力都有較高要求。此時,對於用戶上傳的圖片,我們可以使用多個函數對其分別處理,包括圖片的壓縮、格式轉換等,以滿足不同場景下的需求。圖 1-3 所示為實時文件處理示例。

 

                                                                                           1-3 實時文件處理示例

我們可以通過 Serverless 架構所支持的豐富的事件源、事件觸發機制、代碼和簡單的配置對數據進行實時處理,例如:對對象存儲壓縮包進行解壓、對日誌或資料庫中的數據進行清洗、對 MNS 消息進行自定義消費等。圖 1-4 所示為實時數據處理示例。

 

                                                                                       1-4 實時數據處理示例

3.離線數據處理

通常,要對大數據進行處理,我們需要搭建 Hadoop 或者 Spark 等相關的大數據框架,同時要有一個處理數據的集群。但通過 Serverless 技術,我們只需要將獲得到的數據不斷存儲到對象存儲,並且通過對象存儲配置的相關觸發器觸發數據拆分函數進行相關數據或者任務的拆分,然後再調用相關處理函數,之後存儲到雲資料庫中。

 

例如:某證券公司每 12 小時統計一次該時段的交易情況並整理出該時段交易量 top5;每天處理一遍秒殺網站的交易流日誌獲取因售罄而產生的錯誤,以便準確分析商品熱度和趨勢等。函數計算近乎無限擴容的能力可以使用戶輕鬆地進行大容量數據的計算。

 

利用 Serverless 架構可以對源數據併發執行 mapper 和 reducer 函數,在短時間內完成工作。相比傳統的工作方式,使用 Serverless 架構更能避免資源的閑置,從而節省成本。

 

數據 ETC 處理流程可以簡化為圖 1-5。

                                                                                      1-5 數據 ETL 處理示例

 

4.人工智慧領域

 

在 AI 模型完成訓練,對外提供推理服務時,基於 Serverless 架構,將數據模型包裝在調用函數中,在實際用戶的請求到達時再運行代碼。

 

相對於傳統的推理預測,這樣做的好處是無論是函數模塊還是後端的 GPU 伺服器,以及對接的其他相關機器學習服務,都可以進行按量付費以及自動伸縮,從而在保證性能的同時確保服務的穩定。圖 1-6 為機器學習(AI 推理預測)處理示例。

 

                                                                                1-6 機器學習(AI 推理預測)處理示例

5.物聯網(IoT)領域

 

目前,很多廠商都在推出自己的智能音箱產品—用戶對智能音箱說一句話,智能音箱通過互聯網將這句話傳遞給後端服務,然後得到反饋結果,再返給用戶。通過 Serverless 架構,廠商可以將 API 網關、雲函數以及資料庫產品結合起來,以替代傳統的伺服器或者虛擬機等。

 

Serverless 架構一方面可以確保資源能按量付費,即用戶只有在使用的時候,函數部分才會計費;另一方面當用戶量增加時,通過 Serverless 架構實現的智能音箱系統的後端也會進行彈性伸縮,保證用戶側的服務穩定,且對其中某個功能的維護相當於對單個函數的維護,並不會給主流程帶來額外風險,相對來說會更加安全、穩定等。圖 1-7 為 IoT 後端處理示例。

 

                                                        圖1-7 IoT 後端處理示例

6.監控與自動化運維

 

在實際生產中,我們經常需要做一些監控腳本來監控網站服務或者 API 服務是否健康,包括是否可用、響應速度等。傳統的方法是通過一些網站監控平臺(例如 DNSPod 監控、360 網站服務監控,以及阿裡雲監控等)進行監控和告警。

 

這些監控平臺的原理是用戶自己設置要監控的網站和預期的時間閾值,由監控平臺部署在各地區的伺服器定期發起請求,進而判斷網站或服務的可用性。當然,這些伺服器雖然說通用性很強,但實際上並不一定適合。

 

例如,現在需要監控某網站狀態碼和不同區域的延時,同時設置一個延時閾值,當網站狀態異常或者延時過大時,平臺通過郵件等進行通知和告警。目前,針對這樣一個定製化需求,大部分監控平臺很難直接實現,所以開發一個網站狀態監控工具就顯得尤為重要。

 

除此之外,在實際生產運維中,對所使用的雲服務進行監控和告警也非常有必要。例如:在使用 Hadoop、Spark 時要對節點的健康進行監控;在使用 Kubernetes 時要對 API Server、ETCD 等的指標進行監控;在使用 Kafka 時要對數據積壓量,以及 Topic、Consumer 等的指標進行監控。

 

對於這些服務的監控,我們往往不能通過簡單的 URL 以及某些狀態進行判斷。在傳統的運維中,我們通常會在額外的機器上設置一個定時任務,以對相關服務進行旁路監控。

 

Serverless 架構的一個很重要的應用場景就是運維、監控與告警,即通過與定時觸發器結合使用,實現對某些資源健康狀態的監控與感知。圖 1-8 為網站監控告警示例。

 

                                                                               1-8 網站監控告警示例

 

來 源 | 阿裡雲Serverless團隊

本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/Detailed-explanation-of-6-major-application-scenarios-of-Serverless-architecture.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 每日 3 題 10 以下代碼執行後,控制臺中的輸出內容為? var obj = { a: 1, }; ((obj) => { console.log(obj.a); obj.a = 3; var obj = { a: 2, }; console.log(obj.a); })(obj); consol ...
  • JavaScript 預解析 1.預解析 js引擎運行js代碼,分為兩步:預解析、代碼執行 1.預解析:js引擎會把js裡面所有的var還有function提升到當前作用域的最前面 2.代碼執行:按照代碼書寫的順序從上往下執行 2.變數預解析(變數提升)和函數預解析(函數提升) 1.變數提升:就是把 ...
  • Vue路由傳參的兩種方式query和params 點擊打開視頻講解更加詳細 一、router-link 1. 不帶參數 <router-link :to="{name:'home'}"> <router-link :to="{path:'/home'}"> //name,path都行, 建議用nam ...
  • JavaScript 函數 函數概念 函數:就是封裝了一段可以被重覆執行調用的代碼塊,目的就是讓大量的代碼重覆使用 函數的使用 函數的使用 分兩步:聲明函數和調用函數 //1.聲明函數 //function 函數名() { //函數體 //} function sayHi(){ console.lo ...
  • Vue路由跳轉的四種方式用法及區別 點擊打開視頻講解更加詳細 一、router-link <router-link :to="{name:'home'}"> <router-link :to="{path:'/home'}"> //name,path都行, 建議用name // 註意:router- ...
  • 作為一名H5開發人員可以使用hbuilder或apicloud。但是,到打包和發佈時,被申請ios證書和上架ipa文件給了困難。由於官方提供的方法,申請證書需要使用Mac電腦然後使用Mac電腦中的密鑰鏈訪問,去申請證書csr文件。然後再去蘋果開發者中心申請。 但是,Mac或未使用的Mac朋友都被 ...
  • 蒼穹之邊,浩瀚之摯,眰恦之美; 悟心悟性,善始善終,惟善惟道! —— 朝槿《朝槿兮年說》 寫在開頭 提起Java領域中的鎖,是否有種“道不盡紅塵奢戀,訴不完人間恩怨“的”感同身受“之感?細數那些個“玩意兒”,你對Java的熱情是否還如初戀般“人生若只如初見”? Java中對於鎖的實現真可謂是“百花齊 ...
  • 定義:建造者模式也稱為生成器模式,將一個個簡單對象一步步構造成一個複雜的對象,將複雜對象的構建和它的表示分離,使得同樣的構建過程有不同的表示; 主要解決:系統中複雜對象的創建過程,通常由各個部分的子對象採用一定的演算法構成;由於需求的變化 ,這個複雜對象的各個部分通常面臨著劇烈的變化,但是將他們組合在 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...