[主启动类] — AMSApplication初始化职责
# 一、上节回忆
提出疑问
我们为什么可以快速梳理 Collector 的启动链路?
原因就在于:只要掌握 代码加载的过程,就能清晰地看出职责划分。
在上节中我们已经走到 main → launchAMSApplicationServer,最终落在:
amsApplicationServer.init(conf);
amsApplicationServer.start();
2
其中,init 与 start 是整个启动的两大核心。本节我们专注于 init 阶段。
# 二、主类入口:main 方法
下图展示了主启动类的 main
方法:
它会流转到 launchAMSApplicationServer
这个静态方法:
这里 new
出了一个 AMSApplicationServer,依次调用了 init()
和 start()
。
整个过程可以简化为:
两步走
- 初始化(init):加载配置 + 初始化依赖服务
- 启动(start):挂载 Web 控制器,提供 API
# 三、init 的执行逻辑
我们来看 init(conf)
的真实调用链:
可以看到:
amsApplicationServer.init(conf);
// 实际调用了 AbstractService 的 init 方法
// 方法内部再回调子类的 serviceInit()
2
3
关键点
init()
其实是 父类 AbstractService 的模板逻辑,真正的业务初始化被延迟到 子类 serviceInit()。
因此,init 阶段的核心是两个子类:
- AMSApplicationServer.serviceInit()
- HBaseTimelineMetricsService.serviceInit()
# 四、AMSApplicationServer — 配置文件初始化
进入 AMSApplicationServer.serviceInit
,首先执行:
核心调用:
metricConfiguration.initialize();
# 1. 配置加载源码
URL hbaseResUrl = classLoader.getResource(HBASE_SITE_CONFIGURATION_FILE);
URL amsResUrl = classLoader.getResource(METRICS_SITE_CONFIGURATION_FILE);
hbaseConf = new Configuration(true);
hbaseConf.addResource(hbaseResUrl.toURI().toURL());
metricsConf = new Configuration(true);
metricsConf.addResource(amsResUrl.toURI().toURL());
2
3
4
5
6
7
8
加载结果
- hbase-site.xml → 提供 HBase 存储层配置
- ams-site.xml → 提供 Collector 服务端配置
- ams-ssl-server.xml(可选)→ HTTPS 环境下加载
# 2. 图示说明
这里加载的全是 Key-Value 配置项,最终形成 hbaseConf
与 metricsConf
对象。
注意
如果缺少 hbase-site.xml 或 ams-site.xml,初始化会直接抛出异常,Collector 将无法启动。
# 五、HBaseTimelineMetricsService — 库表初始化
配置文件加载完成后,serviceInit
会继续执行:
timelineMetricStore = createTimelineMetricStore(conf);
对应的是 HBaseTimelineMetricsService。
# 1. 类继承关系
HBaseTimelineMetricsService
同样继承 AbstractService,意味着它拥有独立的生命周期。
# 2. 关键职责
友情提醒
本节不深入讲解 HBaseTimelineMetricsService ,将在下一节详细赘述
- 校验 HBase 环境可用性
- 初始化 METRIC_* 表结构
- 负责持久化存储的准备工作
# 六、职责对比
我们可以将 init 阶段的分工总结为下表:
类名 | 职责定位 | 关键方法/逻辑 |
---|---|---|
AMSApplicationServer | 配置加载 | metricConfiguration.initialize() |
HBaseTimelineMetricsService | 存储初始化 | createTimelineMetricStore() → 建立 METRIC 表 |
重点回顾
- AMSApplicationServer:相当于“准备地基”,加载配置文件,构建运行环境。
- HBaseTimelineMetricsService:相当于“搭建框架”,基于配置完成表模型初始化。
- 01
- [/metrics/metadata] — 元数据查询和使用 GET09-12
- 02
- [/metrics/metadata] — 请求完整链路解读09-12
- 03
- [/metrics/metadata] — 缓存数据装载 Phoenix09-12