从NodeManager.java开始分析。
NodeManager类完成的工作就是启动一系列的服务(Service),Service是具有状态的类,状态有
NOTINITED,
INITED,
STARTED,
STOPPED;
Service有一系列改变这些状态的方法,并且可以注册监听器监听自身状态的变化。
NodeManager本身继承自Service,是一种CompositeService,也就是说NodeManager这个Service又由一些列的Service组成。同时NodeManager实现了监听器接口,可以监听自己的Service的状态变换情况。
组成NodeManager的Service有:
DeletionService 用于删除特定用户特定文件夹下的文件
NodeHealthCheckerService 可配置选项,作用由名字可知
NodeStatusUpdater 更新Node状态的服务,此服务的STOPPED状态会被NodeManager本身监听到并终止NodeManager服务。
NodeResourceMonitor 作用由名可知,监控资源状态的。
ContainerManagerImpl 不清楚,应该是根据资源状况为Application分配Container吧。依赖NodeRecourceMonitor提供资源信息,依赖于NMContext,NMContext包含了一个Node中的Application和Container信息。
AsyncDispatcher 事件消息分发模块,维护一个事件消息队列和一个事件与对应的handler的Map。
注册ContainerManagerEventType(应用终止和容器终止)事件到containerManager,由containerManager处理应用终止和容器终止消息,containerManager实现了EventHandler接口。
WebServer web服务器,应该是用来展示node的运行状态的。