Hadoop 0.23 状态机框架

Hadoop 0.23中使用了基于事件驱动机制的异步编程模型。每个对象都是一个有限状态机,有相应的事件处理器(EventHandler),处理器处理对应的事件类型。事件处理后,对象将从一个状态变化到另一个状态。

以Application对象为例,相关类分别为:

状态类:ApplicationState

处理器类:Application

事件类型类:ApplicationEventType

事件类:ApplicationEvent及子类

其状态机如下图:

Hadoop 0.23 状态机框架

状态机框架

框架中的泛型

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>

状态机框架的实现基本集中在这个类里面。

相关推荐