本文介紹事件驅(qū)動(dòng)架構(gòu)EDA(Event Driven Architecture)的概念、優(yōu)勢(shì)、架構(gòu)圖和使用場(chǎng)景。
什么是事件驅(qū)動(dòng)架構(gòu)
事件驅(qū)動(dòng)架構(gòu)是一種松耦合、分布式的驅(qū)動(dòng)架構(gòu),收集到某應(yīng)用產(chǎn)生的事件后實(shí)時(shí)對(duì)事件采取必要的處理后路由至下游系統(tǒng),無(wú)需等待系統(tǒng)響應(yīng)。使用事件總線EventBridge可以構(gòu)建各種簡(jiǎn)單或復(fù)雜的事件驅(qū)動(dòng)架構(gòu),以標(biāo)準(zhǔn)化的CloudEvents 1.0協(xié)議連接云產(chǎn)品和應(yīng)用、應(yīng)用和應(yīng)用等。
- 事件收集:負(fù)責(zé)收集各種應(yīng)用發(fā)生的事件,如新建訂單,退換貨訂單等其他狀態(tài)變更。
- 事件處理:對(duì)事件進(jìn)行脫敏處理,并對(duì)事件進(jìn)行初步的過(guò)濾和篩選。
- 事件路由:分析事件內(nèi)容并將事件路由分發(fā)至下游產(chǎn)品。
優(yōu)勢(shì)
事件驅(qū)動(dòng)架構(gòu)具有以下優(yōu)勢(shì):
- 降低耦合
降低事件生產(chǎn)者和訂閱者的耦合性。事件生產(chǎn)者只需關(guān)注事件的發(fā)生,無(wú)需關(guān)注事件如何處理以及被分發(fā)給哪些訂閱者。任何一個(gè)環(huán)節(jié)出現(xiàn)故障,不會(huì)影響其他業(yè)務(wù)正常運(yùn)行。
- 異步執(zhí)行
事件驅(qū)動(dòng)架構(gòu)適用于異步場(chǎng)景,即便是需求高峰期,收集各種來(lái)源的事件后保留在事件總線中,然后逐步分發(fā)傳遞事件,不會(huì)造成系統(tǒng)擁塞或資源過(guò)剩的情況。
- 可擴(kuò)展性
事件驅(qū)動(dòng)架構(gòu)中路由和過(guò)濾能力支持劃分服務(wù),便于擴(kuò)展和路由分發(fā)。
- 敏捷性
事件驅(qū)動(dòng)架構(gòu)支持與各種阿里云產(chǎn)品和應(yīng)用集成,支持事件路由至任何系統(tǒng)服務(wù),提供各種敏捷高效的部署方案。
事件驅(qū)動(dòng)架構(gòu)圖
下圖是人力資源服務(wù)系統(tǒng)的事件驅(qū)動(dòng)架構(gòu)示例,事件總線EventBridge收集人力資源服務(wù)系統(tǒng)產(chǎn)生的新員工入職事件,并對(duì)此事件進(jìn)行路由和轉(zhuǎn)發(fā)。這種體系結(jié)構(gòu)可以提高站點(diǎn)的可擴(kuò)展性,同時(shí)能更輕便地應(yīng)對(duì)企業(yè)架構(gòu)升級(jí)和系統(tǒng)拓展。
事件驅(qū)動(dòng)架構(gòu)擴(kuò)展
下圖是訂單服務(wù)系統(tǒng)的事件驅(qū)動(dòng)架構(gòu)示例,該架構(gòu)中事件總線EventBridge負(fù)責(zé)收集各種訂單狀態(tài)的事件后分發(fā)事件至目標(biāo)端。