- Serverless從入門到進階:架構、原理與實踐
- 方坤丁 孫遠高
- 1208字
- 2021-06-24 11:19:08
3.1 事件模型
本節通過介紹FaaS平臺的幾種事件模型(請求模型)及觸發事件的結構,幫助讀者進一步了解FaaS平臺的執行原理及常見的觸發器類型。
3.1.1 FaaS事件模型
事件驅動是FaaS平臺常見的編程模型。FaaS事件模型主要由以下幾個部分組成,如圖3-1所示。

圖3-1 Serverless事件模型組成
- 事件源:觸發后端服務的事件。
- FaaS平臺:函數平臺。
- 后端服務:包括廣泛的服務,如數據庫、消息隊列、其他API服務等。
在FaaS平臺中,通常將事件分為三類,如圖3-2所示。

圖3-2 Serverless事件分類
1. 同步/推送事件
在同步/推送事件模型中,通過一個請求觸發函數,等待其返回函數的執行結果。一個典型的例子是,當我們訪問一個API網關結合函數組成的網站時,輸入對應域名(發送請求)后,這個請求會收到一個resp的返回事件,也就是我們在瀏覽器中查看到的網頁(返回執行結果)。
2. 異步事件
我們在對象存儲中上傳某個文件,或者在通知服務中傳入一條消息,請求會先傳入對應的服務,之后該服務會生成一條請求觸發函數。在這種情況下,函數將執行請求,但不會向客戶端返回執行結果,因此稱為異步事件。
3. 拉取事件
在拉取事件模型中,觸發源往往會收到持續不斷的請求,也稱為流數據。和上述兩種事件模型不同,觸發源不會主動上報或推送請求,而是由FaaS平臺持續運行一個探測服務,檢測變化并主動拉取數據,傳入一個觸發請求執行的函數。該模型最典型的案例是觸發消息隊列,在交易系統中,通過消息隊列實時處理用戶的交易日志,將該隊列配置為FaaS平臺的觸發源,則可以對消息隊列中的流數據進行安全性檢查,篩選出異常數據(如刷單)并告警。
3.1.2 常見觸發器介紹
FaaS平臺的強大能力來自對多種觸發方式的支持,FaaS平臺常見的觸發器有以下幾種。
- API網關:FaaS平臺最常用的觸發器之一,作為Serverless服務的API接入層,起到請求轉發、認證鑒權、安全防護等作用。網關的觸發方式主要是同步請求。
- 對象存儲服務:作為云端的分布式存儲服務,在數據轉存、文件處理等場景下和FaaS服務有緊密的結合,例如文件解壓縮、CDN緩存刷新等。
- 消息隊列服務:用于數據處理,對生產者和消費者之間的數據進行解耦。FaaS服務可以很好地完成數據中轉處理,在數據清洗、異常檢測場景的應用十分廣泛。
- 數據庫服務:FaaS服務和云上數據庫服務也有緊密的結合。數據庫增刪改查等操作作為觸發器事件會傳入FaaS平臺,從而執行關聯操作,例如計數、發送告警等。
- 監控、告警:FaaS服務可以作為監控服務的事件處理平臺,用戶通過配置監控觸發FaaS服務執行自定義邏輯,例如發送告警短信和郵件等。
- 物聯網應用:物聯網應用具有弱狀態性、波峰波谷明顯等特點,十分適合通過FaaS平臺觸發。典型的物聯網服務有AWS Alexa、騰訊云智能對話平臺等。
- 定時觸發:用于在約定的時間執行計劃好的工作,一般通過用戶定義CRON表達式實現時間周期的配置。定時觸發的應用場景非常廣泛,例如定時提醒服務(郵件、企業辦公軟件等)、日志定時清理及收集、請求定時刷新保活等。
- API / SDK觸發:針對一些自定義場景,也可以直接調用FaaS服務的標準HTTP接口觸發,從而實現服務間的靈活組合及擴展。
推薦閱讀
- Practical Data Analysis Cookbook
- Mobile Application Development:JavaScript Frameworks
- C語言程序設計(第3版)
- ThinkPHP 5實戰
- PHP基礎案例教程
- Twilio Best Practices
- Python從菜鳥到高手(第2版)
- Servlet/JSP深入詳解
- Visual C++串口通信技術詳解(第2版)
- Getting Started with Gulp
- Essential C++(中文版)
- Building Serverless Architectures
- Drupal 8 Development Cookbook(Second Edition)
- React and React Native
- Python面向對象編程(第4版)