事件總線 + 函數(shù)計算構(gòu)建云上最佳事件驅(qū)動架構(gòu)應(yīng)用


關(guān)注我們,后臺回復(fù) 手冊免費獲取產(chǎn)品解決方案

正文導(dǎo)讀:
01

事件驅(qū)動架構(gòu)基本概念及形態(tài)

事件驅(qū)動架構(gòu)基本形態(tài)

圍繞事件的流轉(zhuǎn),根據(jù)事件驅(qū)動架構(gòu)的概念和基本形態(tài),主要涉及以下四個核心部分:
Event Producer:負責(zé)產(chǎn)生事件,并將產(chǎn)生的事件投遞到事件通道; Event Channel:負責(zé)接收事件,并將接收的事件持久化存儲,投遞給訂閱該事件的后端處理引擎; Event Processing Engine:負責(zé)對于訂閱的事件做出響應(yīng)和處理,根據(jù)事件更新系統(tǒng)狀態(tài); Downstream event-driven activity:事件處理完成之后,對于事件處理響應(yīng)的一種展示;
事件驅(qū)動架構(gòu)要達成的目的

系統(tǒng)架構(gòu)松耦合
事件生產(chǎn)者與事件訂閱者在邏輯上是分開的。事件的生成與使用的分離意味著服務(wù)具有互操作性,但可以獨立擴縮、更新和部署。
只面向事件的松散耦合可以減少系統(tǒng)依賴項,并允許您以不同的語言和框架實現(xiàn)服務(wù)。您無需更改任何一個服務(wù)的邏輯,即可添加或移除事件生成方和接收方。您無需編寫自定義代碼來輪詢、過濾和路由事件。
系統(tǒng)的可伸縮性
基于事件驅(qū)動架構(gòu)的松耦合特性,意味著可以獨立對事件生產(chǎn)者,事件通道服務(wù),以及事件處理引擎進行獨立的擴縮容;尤其對于后端事件處理引擎,可以根據(jù)消息處理響應(yīng) SLA 和后端資源供給進行彈性擴縮容;同時可以基于事件粒度構(gòu)建不同規(guī)格的后端處理服務(wù),實現(xiàn)更細粒度的系統(tǒng)彈性伸縮。
系統(tǒng)的可擴展性
系統(tǒng)的可擴展性,主要表現(xiàn)在當(dāng)系統(tǒng)需要增加新的功能,如何快速的基于現(xiàn)有系統(tǒng)架構(gòu)快速構(gòu)建支持新的業(yè)務(wù)邏輯,在事件驅(qū)動架構(gòu)應(yīng)用中,圍繞事件粒度的處理模式,能夠天然快速支持增加新的基于事件的數(shù)據(jù)流抽象。
當(dāng)系統(tǒng)中增加新的事件類型的時候,無需調(diào)整變更發(fā)布整個系統(tǒng),只需要關(guān)注需要訂閱的事件進行事件處理邏輯的開發(fā)和部署即可,也可以基于原來的系統(tǒng)做很少的代碼變更即可實現(xiàn),也可以在業(yè)務(wù)初期通過獨立的服務(wù)訂閱指定的事件完成特定的業(yè)務(wù)邏輯支持。
02
在討論完事件驅(qū)動架構(gòu)基本模型之后,我想關(guān)于事件驅(qū)動的概念,形態(tài)我們有了統(tǒng)一的認識和理解,接下來我們進入議題的第二個部分,為什么函數(shù)計算是云上事件驅(qū)動服務(wù)最佳實踐?
函數(shù)計算簡介
函數(shù)計算 FC 是一款基于事件驅(qū)動的全托管計算服務(wù),相關(guān)的產(chǎn)品細節(jié)可以見官網(wǎng)介紹。作為一款通用的事件驅(qū)動型計算服務(wù),接下來我會從三個方面進行詳細的介紹。

編程范式
使用函數(shù)計算,用戶無需采購與管理服務(wù)器等基礎(chǔ)設(shè)施,只需編寫并上傳代碼。函數(shù)計算為你準備好計算資源,彈性地、可靠地運行任務(wù),并提供日志查詢、性能監(jiān)控和報警等開箱即用功能,編程范式帶來開發(fā)的“簡單,快捷”。
按照函數(shù)粒度進行獨立的功能單元開發(fā),快速調(diào)試,快速的部署上線,省去了大量資源購買,環(huán)境搭建的運維工作;同時函數(shù)計算是一個事件驅(qū)動的模型,事件驅(qū)動,意味著用戶不需要關(guān)注服務(wù)產(chǎn)品數(shù)據(jù)傳遞的問題,省去了在編寫代碼中涉及的大量服務(wù)訪問連接的邏輯;“事件驅(qū)動” + “函數(shù)粒度開發(fā)” + “免服務(wù)器運維”等幾個維度特征幫助函數(shù)計算支撐“聚焦業(yè)務(wù)邏輯敏捷開發(fā)”的底層邏輯。

計算模型
除了開發(fā)模式帶來的研發(fā)效能提升之外,函數(shù)計算提供非常細粒度的計算資源和毫秒級計費模型,支撐按需計算,按量收費;能夠支持按用戶的請求,根據(jù)用戶流量的模型為計算付費;當(dāng)然按用戶請求付費存在技術(shù)上巨大的挑戰(zhàn),要求函數(shù)計算實例的啟動小于用戶的 RT 要求,冷啟動性能尤為重要,這時候極致彈性成為了 Serverless 按需付費,業(yè)務(wù)降本的底層技術(shù)支撐。函數(shù)計算通過“極致彈性” + “按需付費”的模型幫助 Serverless 函數(shù)計算實現(xiàn)真正的按需計算邏輯。

事件驅(qū)動
在基于云的開發(fā)環(huán)境,云產(chǎn)品承載的服務(wù)相對內(nèi)聚,各自扮演著分布式系統(tǒng)架構(gòu)中的各個重要角色,云產(chǎn)品之間的事件觸發(fā)機制能夠幫助客戶更好的基于多個云產(chǎn)品構(gòu)建自己的業(yè)務(wù)系統(tǒng);否則需要用戶自己負責(zé)云產(chǎn)品事件的監(jiān)聽,串聯(lián)云服務(wù),進行復(fù)雜的錯誤處理,這是非常復(fù)雜,開發(fā)代價極其昂貴的一件事;
除了產(chǎn)品連接帶來的開發(fā)效率之外,當(dāng)用戶訂閱某個事件,并提供處理邏輯的時候,客戶已經(jīng)潛在的過濾掉了不需要處理的事件請求,事件驅(qū)動意味著每一次的事件觸發(fā)請求都是一次完全有效的計算。

函數(shù)計算對于事件驅(qū)動架構(gòu)的價值
為什么函數(shù)計算是云上最佳的事件驅(qū)動架構(gòu)服務(wù)?函數(shù)計算對于事件驅(qū)動架構(gòu)的核心價值到底是什么?
事件驅(qū)動架構(gòu)一直存在,在沒有函數(shù)計算的時候,同樣也有事件驅(qū)動架構(gòu),在微服務(wù)的時候也同樣有事件驅(qū)動架構(gòu)。如今,當(dāng)我們重新再來討論事件驅(qū)動架構(gòu)的時候,到底是什么發(fā)生了變化,有哪些本質(zhì)的區(qū)別?在整個事件驅(qū)動架構(gòu)中,函數(shù)計算最大的價值在于幫助構(gòu)建 “Event Processing Engine” 這個角色,我想主要是以下兩個方面發(fā)生了本質(zhì)的變化:

系統(tǒng)可擴展性價值
開發(fā)模式發(fā)生了本質(zhì)的變化:函數(shù)計算提供的框架能力及編程模型,最大化的消除了客戶業(yè)務(wù)邏輯之外的處理內(nèi)容,極大的加速了客戶業(yè)務(wù)開發(fā),同時基于這樣這樣的開發(fā)模式,用戶對于新增事件處理邏輯能夠在最短的時間完成處理并上線,細粒度,專注業(yè)務(wù)的敏捷開發(fā)模式能夠加速業(yè)務(wù)快速上線。
系統(tǒng)可伸縮性價值
計算模式發(fā)生了本質(zhì)的變化:基于事件驅(qū)動架構(gòu)事件粒度的處理邏輯和函數(shù)計算更細粒度力度計算彈性能力,能夠從多個維度實現(xiàn) “Event Processing Engine” 組件的彈性能力, 這我想這也是函數(shù)計算對于事件驅(qū)動架構(gòu)的一個最核心價值。
03
構(gòu)建云上事件驅(qū)動架構(gòu)挑戰(zhàn)

事件源多樣性挑戰(zhàn)
授權(quán)復(fù)雜及安全隱患
通用能力難以沉淀
事件總線簡介
總線模式(EventBus)

事件:狀態(tài)變化的記錄; 事件源:事件的來源,事件的產(chǎn)生者,產(chǎn)生事件的系統(tǒng)和服務(wù), 事件源生產(chǎn)事件并將其發(fā)布到事件總線; 事件總線:負責(zé)接收來自事件源的事件;EventBridge 支持兩種類型的事件總線:
云服務(wù)專用事件總線:無需創(chuàng)建且不可修改的內(nèi)置事件總線,用于接收您的阿里云官方事件源的事件。 自定義事件總線:標準存儲態(tài)總線,用于接收自定義應(yīng)用或存量消息數(shù)據(jù)的事件,一般事件驅(qū)動可選該總線。
事件規(guī)則:用于過濾,轉(zhuǎn)化事件,幫助更好的投遞事件; 事件目標:事件的消費者,負責(zé)具體事件的處理。
通過上面的流程,完成了事件的產(chǎn)生,事件的投遞,事件的處理整個過程。當(dāng)然事件并不是一個新的概念,事件驅(qū)動架構(gòu)也不是一個新的概念,事件在我們的系統(tǒng)中無處不在,事件驅(qū)動架構(gòu)同樣伴隨著整個計算機的架構(gòu)演進,不斷地被討論。
事件流模式(EventStreaming)

事件總線對于事件驅(qū)動架構(gòu)的價值
簡化統(tǒng)一事件源接入

沉淀通用事件通道能力


提升優(yōu)化用戶集成體驗

04
總線模式+函數(shù)計算用戶案例
利用 ActionTrail 事件觸發(fā)函數(shù)進行多賬號審計管理

利用 OSS 文件上傳事件觸發(fā)函數(shù)擴容 ACK 集群資源

利用 OSS 文件上傳執(zhí)行 Terraform 文件并訪問外部 API 做結(jié)果通知

事件流模式+函數(shù)計算用戶案例
事件流觸發(fā)函數(shù)計算處理業(yè)務(wù)消息

事件流觸發(fā)函數(shù)計算進行簡單 ETL 數(shù)據(jù)同步

事件流觸發(fā)函數(shù)進行簡單 ETL 數(shù)據(jù)清洗入庫

函數(shù)異步+事件流觸發(fā)函數(shù)構(gòu)建電商運營通知系統(tǒng)

一 END 一

未來已來:從技術(shù)升級到降本提效

“全”事件觸發(fā):阿里云函數(shù)計算與事件總線產(chǎn)品完成全面深度集成
<關(guān)注 Serverless 公眾號,留言回復(fù) 手冊 免費獲取阿里云云原生 Serverless 產(chǎn)品解決方案手冊>

??歡迎后臺回復(fù) “進群” 加入阿里云 Serverless 千人開發(fā)者技術(shù)學(xué)習(xí)群交流。
點擊“閱讀原文”進入 EventBridge 官網(wǎng)!
