事件总线模式辨析
事件總線定義:事件總線是對發布-訂閱模式的一種實現。它是一種集中式事件處理機制,允許不同的組件之間進行彼此通信而又不需要相互依賴,達到一種解耦的目的。
事件總線的處理流程:
?
?
發布訂閱模式主要有兩個角色:
- 發布方(Publisher):也稱為被觀察者,當狀態改變時負責通知所有訂閱者。
- 訂閱方(Subscriber):也稱為觀察者,訂閱事件并對接收到的事件進行處理。
發布訂閱模式有兩種實現方式:
- 簡單的實現方式:由Publisher維護一個訂閱者列表,當狀態改變時循環遍歷列表通知訂閱者。
- 委托的實現方式:由Publisher定義事件委托,Subscriber實現委托。
總的來說,發布訂閱模式中有兩個關鍵字,通知和更新。
被觀察者狀態改變通知觀察者做出相應更新。
解決的是當對象改變時需要通知其他對象做出相應改變的問題。
主要是處理事件,包括4個主要組件:事件源、事件監聽器、通道和事件總線。消息源將消息發布到事件總線上的特定通道上。偵聽器訂閱特定的通道。偵聽器會被通知消息,這些消息被發布到它們之前訂閱的一個通道上。
使用場景:安卓開發、通知服務
優點:新的發布者、訂閱者和連接可以很容易地添加。對高度分布式的應用程序有效。
缺點:可伸縮性可能是一個問題,因為所有消息都是通過同一事件總線進行的。
二、基于事件驅動的分布式異步架構模式多用于構建高可伸縮的反應式應用程序,適用于各種從簡單到復雜的應用場景。它的核心思想是去耦合,將消息的發送和接收分開,實現異步處理消息事件。
事件總線是實現基于事件驅動模式的方式之一,或者可以將其稱為“Broker Topology”。事件發送者將事件消息發送到一個中心 broker 上,事件訂閱者向中心 broker 訂閱和接收事件,然后再處理接收到的事件。當然,訂閱者不僅可以接收和消費事件,它們本身也可以創建事件,并將它們發送到事件總線上。下面列出了 4 種事件總線的實現方式,并對它們的優缺點進行了總結。
?
1. 向所有的訂閱者發送事件
事件總線直接將輸入事件(紅色箭頭)發送給訂閱者(藍色方塊)
參與者
事件總線、訂閱者(事件處理器)、事件創建者
實現
事件創建者向事件總線發送事件,事件總線將收到的事件發送給所有的訂閱者。訂閱者既可以處理接收到的事件,也可以創建新事件,然后把它們發送給事件總線。事件總線不關心訂閱者是否成功接收到消息。
功能需求
通知、訂閱、退訂。
優勢
實現起來很簡單。
不足
事件總線需要將每一個事件消息復制一份給訂閱者,也就是說,如果有1000個訂閱者,每一個事件都會有1000份拷貝,這樣會占用大量的內存。
事件總線不保證消息傳遞的可靠性,它會嘗試給訂閱者發送消息,而且只會嘗試一次,如果出現錯誤,比如網絡連接錯誤,訂閱者可能就會收不到消息。?
另外,事件總線不負責過濾消息,所以訂閱者需要自己實現過濾邏輯。
轉載于:https://www.cnblogs.com/wangfengbin/p/9121765.html
總結
- 上一篇: 《简明 Python 教程》笔记
- 下一篇: [LeetCode]Integer to