天天看點

Hadoop Yarn事件處理架構源碼分析

由于想在項目中使用類似yarn的事件處理機制,就看了實作。主要是由Dispatcher.java,EventHandler.java,Service.java這3個類撐起來的。

 在事件處理之前,先注冊相應的事件處理handler,收到事件event後,由派發事件的Dispatcher進行派發,預設采用異步事件處理方式将事件放到事件隊列(LinkedBlockingQueue)中,消費者會循環從隊列中取出事件進行處理。

要使用事件處理,首先需要建立Dispatcher,示例代碼如下:

然後通過AsyncDispatcher調用getEventHandler()傳回的EventHandler的處理對應事件,AsyncDispatcher類的getEventHandler()方法如下:

上述完成生産,再看消費如下實作的:

檢視createThread()方法,如下所示:

從eventQueue隊列中取出Event,然後調用dispatch(event);來處理事件,看dispatch(event)方法,如下所示:

整個過程使用生産--消費者模型,異步事件處理,整體實作起來還是很簡單的!