本文以Firebase爲例,由於騰訊雲的雲函數正在內測,還沒申請到。:)web
現現在雲計算時代漸漸出現了愈來愈多的新型模式,從數據庫
IaaS: Infrastructure-as-a-Service(基礎設施即服務)後端
PaaS: Platform-as-a-Service(平臺即服務)api
SaaS: Software-as-a-Service(軟件即服務)安全
到CaaS:Containers as a Service(容器雲)服務器
再到的微服務架構,都在試着將各類軟、硬件資源或抽象的事物作爲一種服務提供給開發者使用,讓開發者再也不擔憂基礎設施、資源需求、中間件等等,在減輕心智負擔的同時更好地專一於業務。網絡
FaaS是Functions as a Service(函數即服務)的簡稱,它每每和無服務架構(Serverless Architecture)一同被提起。架構
騰訊雲的SCF併發
無服務器雲函數(Serverless Cloud Function)是騰訊雲提供的無服務器(serverless)執行環境,您無需購買和管理服務器,而只需使用平臺支持的語言編寫核心代碼並設置代碼運行的條件,代碼便可在騰訊雲基礎設施上彈性、安全地運行。騰訊雲徹底管理底層計算資源,包括服務器 CPU、內存、網絡和其餘配置/資源維護、代碼部署、彈性伸縮、負載均衡等。代碼按需運行,空閒時不收費。使用無服務器雲函數將幫您免除全部運維性操做,使您更加專一於核心業務的開發,實現快速上線和迭代,把握業務發展的黃金時期。app
Firebase
雲函數使開發人員可以訪問Firebase和Google Cloud的一些事件,以及可擴展的計算來運行代碼以響應處理這些事件。 Firebase以獨特的方式使用雲函數來知足其獨特需求,典型運用的領域:
當發生了一些新奇有趣的事情通知用戶
執行實時的數據庫清理和維護
在雲上執行密集的任務,而不是在本地的應用程序上
與第三方的服務和API集成
下面就進行一一說明。
開發人員可使用雲函數來保持與用戶之間的聯繫和獲取最新的有關應用程序的相關信息。
好比,在一些社交網站或應用上(如微博)。 在這樣的程序中,由實時數據庫觸發的寫入功能以存儲新的關注者能夠建立Firebase的雲消息通知,讓用戶知道他們的粉絲數又增長了。
下面是它的工做原理圖:
該函數在對實時的數據庫路徑寫入了相關信息,存儲粉絲
該函數經過向FCM(Google的推送服務)發送消息
FCM向用戶的設備發送通知消息
YingJoy
其它通知的用例
向訂閱/取消訂閱的用戶發送確認電子郵件
用戶完成註冊後發送歡迎郵件
當用戶建立新賬戶時發送短信確認
等等
使用雲函數數據庫處理事件,能夠根據用戶行爲修改實時數據庫,保持系統的更新和清潔。 例如,在基於實時數據庫的聊天室應用程序中,您能夠監視寫入的事件,並從用戶的消息中擦除一些帶有敏感詞或不恰當的文本。 下面是它的工做原理圖:
函數的數據庫事件處理程序監聽特定路徑上的寫入事件,並檢索全部聊天消息的事件。
該函數處理文本以檢測和擦除敏感詞或不恰當的語言。
該函數將更新的文本從新寫回數據庫。
YingJoy
其餘實時數據庫清理和維護用例
從實時數據庫中清除已刪除用戶的帳戶信息
限制數據庫中的子節點數
跟蹤實時數據庫列表中的元素數量
將文本轉換爲表情符號
管理數據庫記錄的計算元數據
開發人員能夠利用雲端功能將雲資源密集型工做(要耗費繁重的CPU資源或網絡資源)將運行的實際狀況傳送到在用戶設備上。 例如,您能夠編寫一個函數來監聽圖像上傳到Storage(谷歌的一個存儲圖像的程序)中,將圖片的映像下載到運行該功能的實例,修改它並將其上傳回頁面中。 修改包括調整圖片大小,裁剪或轉換圖像。利用ImageMagick命令行工具,與雲功能一塊兒使用,使其工做變得更加簡單容易。
下面是它的工做原理圖:
當圖像上傳到Storage的時候,該函數會被觸發
該函數下載該圖像的並建立它的縮略圖
該函數將此縮略圖的位置寫入數據庫,這樣客戶端程序就可使用它
該函數將縮略圖上傳到新的存儲位置
YingJoy
其餘在雲上執行密集的任務,而不是在本地的應用程序上用例
1.按期刪除未使用的賬戶
2.自動和上傳的圖像
3.向用戶發送批量電子郵件
4.按期彙總數據
5.處理待處理的工做隊列
雲函數能夠經過調用和公開服務或API來使你的應用程序能夠更好地與其餘服務配合工做。 例如,用於開發團隊的應用程序能夠將GitHub提交到開發團隊的聊天室。
下面是它的工做原理圖:
當有人提交給GitHub,經過GitHub的webhook API觸發HTTPS功能。
該函數將提供一個Team Slack API 來發送提交的通知。
而後把消息發送給團隊的聊天室中
YingJoy
其餘與第三方的服務和API集成用例
使用Google的Cloud Vision API分析和標記上傳的圖像。
使用Google翻譯郵件
使用LinkedIn或Instagram身份驗證服務
向實時數據庫寫入webhook的發送請求
實時數據庫元素的全庫搜索
建立自動回覆電話和短信
使用Google助手建立聊天機器人
這裏僅僅討論它的應用場景
視頻應用、社交應用等場景下,用戶上傳的圖片、音視頻的總量大頻率高,對移動應用的實時性和併發能力都有較高的要求。例如:使用多個雲函數對上傳的視頻短片進行轉碼,分別對應不一樣的清晰度(1080p、720p 等),以知足不一樣場景下用戶的需求,適應移動網絡帶寬較小且不穩定的特性。
其中視頻文件始終在COS上
一些數據處理系統中,經常須要週期性/計劃性地處理龐大的數據量。例如:證券公司每12小時統計一次該時段的交易狀況並整理出該時段交易量 top 5,天天處理一遍秒殺網站的交易流日誌獲取因售罄而致使的錯誤從而分析商品熱度和趨勢等。
此時,騰訊雲無服務器雲函數 SCF 近乎無限擴容的能力可使您輕鬆地進行大容量數據的計算。在下圖所示的例子中,SCF 能夠對源數據併發執行多個 mapper 函數,在短期內完成工做,相比傳統的工做方式,更能避免資源的閒置浪費而節省資金。
相似於上面的在雲上執行密集的任務,而不是在本地的應用程序上
將存儲在雲對象存儲COS的文件經過Map雲函數進行文件映射
將映射出來的許多小文件分別經過雲函數處理
而後將處理後的文件存儲至雲數據庫中(使得Map更加持久化)
而後經過Reduce函數將文件整合
最後會從新把這個新獲得的存儲到COS中
無服務器雲函數和其餘騰訊云云服務緊密結合,開發者可以構建可彈性擴展並在多個數據中心高可用運行的移動或 Web 應用程序 – 輕鬆建立豐富的無服務器後端,無需在可擴展性、備份冗餘方面執行任何管理工做。
用戶受權登錄(OAuth)利用雲函數進行驗證(上面的與第三方服務或API集成)
瀏覽商品,商品信息存儲在雲對象存儲COS上
雲函數處理用戶的下單(歷史數據或剛剛下的單)來對用戶進行產品推薦
其中:
1.使用 COS 託管靜態網站,構建商品明細模塊;
2.使用 無服務器雲函數 構建登陸模塊,能夠直接複用 OAuth 的受權登陸邏輯;
3.使用 無服務器雲函數 構建訂單模塊,在用戶調用下單相關接口時觸發增刪訂單等函數;
4.同時使用 無服務器雲函數 支持個性化模塊,根據用戶的訂單信息生成個性化數據並返回給客戶端。
原文出自騰訊雲技術社區原文連接https://www.qcloud.com/community/article/370475