Hadoop 0.23中使用了基于事件驱动机制的异步编程模型。每个对象都是一个有限状态机,有相应的事件处理器(EventHandler),处理器处理对应的事件类型。事件处理后,对象将从一个状态变化到另一个状态。
以Application对象为例,相关类分别为:
状态类:ApplicationState
处理器类:Application
事件类型类:ApplicationEventType
事件类:ApplicationEvent及子类
其状态机如下图:
状态机框架
框架中的泛型
OPERAND
表示状态机的操作对象,如Application对象。
STATE
表示对象的状态,如ApplicationState代表的相关状态。
EVENTTYPE
表示需要处理的事件类型,如ApplicationEventType代表的相关类型。
EVENT
表示具体事件对象,如ApplicationEvent对象。
StateMachine
StateMachine<STATE extends Enum<STATE>,EVENTTYPEextends Enum<EVENTTYPE>, EVENT>
主要方法:
public STATEgetCurrentState();
获取当前状态
public STATEdoTransition(EVENTTYPE eventType, EVENT event)
根据事件类型和事件对象进行状态迁移。
StateMachineFactory
StateMachineFactory <OPERAND,STATE extends Enum<STATE>, EVENTTYPEextends Enum<EVENTTYPE>, EVENT>
状态机框架的实现基本集中在这个类里面。