1. 程式人生 > >Spark2.1.0事件匯流排分析——ListenerBus的繼承體系

Spark2.1.0事件匯流排分析——ListenerBus的繼承體系

         通過閱讀《Spark2.1.0之原始碼分析——事件匯流排》一文,理解了ListenerBus的定義後,本小節一起來看看有哪些類繼承了它。ListenerBus的類繼承體系如圖1所示。

ListenerBus的類繼承體系
圖1  ListenerBus的類繼承體系

從圖1中可以看到有三種ListenerBus的具體實現,分別為:

  • SparkListenerBus:用於將SparkListenerEvent型別的事件投遞到SparkListenerInterface型別的監聽器;
  • StreamingQueryListenerBus:用於將StreamingQueryListener.Event型別的事件投遞到StreamingQueryListener型別的監聽器,此外還會將StreamingQueryListener.Event型別的事件交給SparkListenerBus;
  • StreamingListenerBus:用於將StreamingListenerEvent型別的事件投遞到StreamingListener型別的監聽器,此外還會將StreamingListenerEvent型別的事件交給SparkListenerBus。

SparkListenerBus也有兩種實現:

  • LiveListenerBus:採用非同步執行緒將SparkListenerEvent型別的事件投遞到SparkListener型別的監聽器;
  • ReplayListenerBus:用於從序列化的事件資料中重播事件。

有了對事件匯流排的這些介紹,讀者已經在巨集觀上對其有所認識。但是如果沒有具體的實現,ListenerBus本身也無法發揮作用。下一小節我們將選擇對SparkListenerBus從更加微觀的角度說明如何使用事件匯流排。

關於《Spark核心設計的藝術 架構設計與實現》

經過近一年的準備,《Spark核心設計的藝術 架構設計與實現》一書現已出版發行,圖書如圖:

紙質版售賣連結如下: