dremio DremioDaemon 简单说明
DremioDaemon 的核心是启动dremio服务同时进行一些依赖的注入
简单启动说明
- 包含了自动更新处理(主要是kv 存储的,后边会介绍dremio 一些任务)
- 查找DACModule创建类,并初始化内部包含的服务(不少是基于dremio 的service 机制启动的),等待jvm 退出,并处理一些runtime 的hook(主要是资源的释放处理)
参考代码
public static void main(String[] args) throws Exception {
try (TimedBlock b = Timer.time("main")) {
final DACConfig config = DACConfig.newConfig();
final SabotConfig sabotConfig = config.getConfig().getSabotConfig();
final ScanResult classPathScan = ClassPathScanner.fromPrescan(sabotConfig);
// 对于master 节点,尝试直接自动升级(kv 存储相关的)
if (config.isMaster) {
// Try autoupgrade before starting daemon
AutoUpgrade autoUpgrade = new AutoUpgrade(config, classPathScan);
autoUpgrade.run(false);
}
// 查找DACModule 的配置类,并创建实例
final DACModule module = sabotConfig.getInstance(DAEMON_MODULE_CLASS, DACModule.class, DACDaemonModule.class);
// 模块创建DACDaemon,此模块实际上才是dremio 好多干活的地方
try (final DACDaemon daemon = DACDaemon.newDremioDaemon(config, classPathScan, module)) {
// 启动服务(一些实现service 的服务,以及启动以来的)
daemon.init();
// jvm 服务关闭资源释放是否的hook
daemon.closeOnJVMShutDown();
daemon.awaitClose();
}
} catch (final Throwable ex) {
ProcessExit.exit(ex, "Failure while starting services.", 4);
}
}
说明
DremioDaemon 属于dremio 的入口实际上是比较重要的一个服务,同时此入口我们可以慢慢的了解dremio 个个模块的机制
参考资料
dac/daemon/src/main/java/com/dremio/dac/daemon/DremioDaemon.java
dac/backend/src/main/java/com/dremio/dac/daemon/DACDaemon.java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-01-19 Full Schema Stitching with Apollo Server
2019-01-19 GraphQL Gateway Architectures
2019-01-19 Modularizing your graphQL schemas
2018-01-19 sailsjs 不用写代码就能生成rest api 代码