hadoop 0.23 状态机框架
来源:互联网 发布:淘宝店铺招牌多少钱 编辑:程序博客网 时间:2024/05/22 17:31
UHP博客文章地址:http://yuntai.1kapp.com/?p=646
原创文章,转载请注明出处:http://blog.csdn.net/wind5shy/article/details/8332017
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 STATE getCurrentState();
获取当前状态
· public STATE doTransition(EVENTTYPE eventType, EVENT event)
根据事件类型和事件对象进行状态迁移。
StateMachineFactory
StateMachineFactory <OPERAND,STATE extends Enum<STATE>, EVENTTYPEextends Enum<EVENTTYPE>, EVENT>
状态机框架的实现基本集中在这个类里面。
主要成员
· private final TransitionsListNode transitionsListNode;
所有迁移列表。
· private Map<STATE, Map<EVENTTYPE, Transition<OPERAND,STATE, EVENTTYPE, EVENT>>>stateMachineTable;
储存状态机中每个状态和该状态相应迁移的信息。注意,这个table中储存了多个状态机,因为每个状态机的状态都是不相同的。
· private STATE defaultInitialState;
创建状态机时默认的初始化状态。
主要方法
· public StateMachineFactory<OPERAND, STATE, EVENTTYPE,EVENT> addTransition(STATE preState, STATE postState, EVENTTYPE eventType,SingleArcTransition<OPERAND, EVENT>hook)
· public StateMachineFactory<OPERAND, STATE, EVENTTYPE,EVENT> addTransition(STATE preState,Set<STATE> postStates, EVENTTYPE eventType,MultipleArcTransition<OPERAND, EVENT, STATE> hook)
将一个单箭头/多箭头迁移加入StateMachineFactory的迁移列表中。
· public StateMachine<STATE, EVENTTYPE, EVENT> make(OPERAND operand, STATE initialState)
创建一个状态机。
相关类
Transition
Transition<OPERAND, STATE extends Enum<STATE>,EVENTTYPEextends Enum<EVENTTYPE>, EVENT>
代表了状态机状态的一次变化。
主要方法:
· STATEdoTransition(OPERAND operand, STATE oldState, EVENT event,EVENTTYPE eventType);
根据事件类型和事件将状态机操作对象从旧状态迁移到新状态(返回值)。
迁移的钩子函数接口
迁移的具体处理是由钩子函数完成的。
SingleArcTransition<OPERAND, EVENT>
Hookfor Transition. This lead to state machine to move to the post state asregistered in the state machine.
只有单箭头的迁移,即状态机图中当前状态的后继状态只有一个。
主要方法:
· public voidtransition(OPERAND operand, EVENT event);
MultipleArcTransition
MultipleArcTransition <OPERAND, EVENT,STATE extends Enum<STATE>>
Hookfor Transition. Post state is decided by Transition hook. Post state must beone of the valid post states registered in StateMachine.
多箭头的迁移,状态机图中当前状态的后续状态有多个,由事件类型来决定迁移的后续状态。
主要方法:
· public STATEtransition(OPERAND operand, EVENT event);
返回值为迁移相应事件的后续状态。
迁移的实现类
SingleInternalArc
单箭头的迁移,迁移的后续状态在创建时指定。
MultipleInternalArc
多箭头的迁移,迁移的可能后续状态在创建时指定,完成迁移后的后续状态由MultipleArcTransition. transition方法给出。
ApplicableTransition
实现类ApplicableSingleOrMultipleTransition,代表一个可以加入stateMachineTable的迁移,创建时需要迁移的前置状态、事件类型和迁移本身。
TransitionsListNode
保存一个ApplicableTransition和下一个TransitionsListNode的指针,可以通过这个类遍历StateMachineFactory中所有的迁移。
InternalStateMachine
实现StateMachine,只保存一个状态机的操作对象和状态机当前的状态。doTransition方法调用的是StateMachineFactory.doTransition方法,从stateMachineTable中找到相应迁移,再调用Transition的doTransition。
原创文章,转载请注明出处:http://blog.csdn.net/wind5shy/article/details/8332017
- hadoop 0.23 状态机框架
- 状态机框架
- QT状态机框架
- Qt 状态机框架学习
- qt状态机框架
- Qt状态机框架
- QT状态机框架
- Qt Qml状态机框架
- 状态机,消息循环,框架
- 状态机FSM代码框架
- Qt 状态机框架学习
- Qt状态机框架
- 面向对象状态机框架
- hadoop之yarn状态机模型
- QT中状态机框架测试
- YSJ_FSM状态机软件框架分析
- 基于状态机的游戏框架
- qt状态机和动画框架
- DSN配置(Mysql)
- linux系统端口查看
- 取本机IP地址和网卡号
- linux防火墙端口查看
- 通过代理在主窗口加载视图
- hadoop 0.23 状态机框架
- jdk1.6新特性
- outlook2007不能发送邮件
- hibernate学习笔记 之 实体几种状态的区别
- 笨方法带来流量
- C语言冒泡法用指针实现
- myeclipse安装svn插件的多种方式
- DOM对象和JQuery对象的区别
- Jquery操作select