/**
* Constructor
*/
public AzkabanWebServer(Server server, Props props) throws Exception {
this.props = props;
this.server = server;
velocityEngine =
configureVelocityEngine(props
.getBoolean(VELOCITY_DEV_MODE_PARAM, false));
sessionCache = new SessionCache(props);//SessionCache是用來(lái)保存session的,google.common.Cache
userManager = loadUserManager(props);//加載用戶管理類,默認(rèn)是XmlUserManager,可以實(shí)現(xiàn)UserManager接口,
alerters = loadAlerters(props);
executorManager = loadExecutorManager(props);//executor管理器,獲取所有executor,更新executor,獲取executor整在跑的flow,獲取當(dāng)前flow在跑的個(gè)數(shù)等
projectManager = loadProjectManager(props);
triggerManager = loadTriggerManager(props);
loadBuiltinCheckersAndActions();
// load all trigger agents here
scheduleManager = loadScheduleManager(triggerManager, props);
String triggerPluginDir =
props.getString("trigger.plugin.dir", "plugins/triggers");
loadPluginCheckersAndActions(triggerPluginDir);
baseClassLoader = this.getClassLoader();
tempDir = new File(props.getString("azkaban.temp.dir", "temp"));
// Setup time zone
if (props.containsKey(DEFAULT_TIMEZONE_ID)) {
String timezone = props.getString(DEFAULT_TIMEZONE_ID);
System.setProperty("user.timezone", timezone);
TimeZone.setDefault(TimeZone.getTimeZone(timezone));
DateTimeZone.setDefault(DateTimeZone.forID(timezone));
logger.info("Setting timezone to " + timezone);
}
configureMBeanServer();
if (props.getBoolean(ServerProperties.IS_METRICS_ENABLED, false)) {
startWebMetrics();
}
}
上面是AzkabanWebServer的構(gòu)造函數(shù),AzkabanWebServer有如下的管理器:
- userManager
- projectManager
- executorManager
- scheduleManager
- triggerManager
Usermanager
用戶管理器,管理當(dāng)前用戶是否存在,獲取該用戶詳細(xì)信息,比如所在的組,角色.可以通過(guò)它實(shí)現(xiàn)當(dāng)前可以操作昆烁、查看哪些project
ProjectManager
工程管理器,管理工程創(chuàng)建雹拄、上傳辖源、下載冠摄、存儲(chǔ)project,flow,properties信息.獲取工程的所有流,獲取流的所有job,解析zip包成flows,job
ExecutorManager
executor管理器,它有兩種模式,單機(jī)版或集群版.如果單機(jī)版,獲取executor,獲取executor正在執(zhí)行的flow,向executor提交flow反番、取消job暂氯、提交job等
scheduleManager
調(diào)度管理器
triggerManager
觸發(fā)管理器.