dremio DACModule 模块加载简单说明
dremio DACModule 主要是模块加载初始化以及组合,是一个比较重要的模式,同时也支持基于配置进行加载(有点很多了,后边简单介绍)
加载机制
- 支持配置加载
可以通过dremio 运行配置文件添加dremio.daemon.module.class 支持
services: {
coordinator.enabled: true,
coordinator.master.enabled: true,
executor.enabled: false
}
dremio:{
daemon.module.class: "com.dremio.dac.daemon.DACDaemonModule" // 默认实现可以扩展自己的
}
- 通过动态类创建模式进行处理
代码处理DremioDaemon 入口中
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);
if (config.isMaster) {
// Try autoupgrade before starting daemon
AutoUpgrade autoUpgrade = new AutoUpgrade(config, classPathScan);
autoUpgrade.run(false);
}
// 基于sabotConfig 提供的类加载以及创建机制加载社区的模块DACDaemonModule,此处就很强大了,可以扩展自己的DACDaemonModule,实现一些其他功能
final DACModule module = sabotConfig.getInstance(DAEMON_MODULE_CLASS, DACModule.class, DACDaemonModule.class);
try (final DACDaemon daemon = DACDaemon.newDremioDaemon(config, classPathScan, module)) {
daemon.init();
daemon.closeOnJVMShutDown();
daemon.awaitClose();
}
} catch (final Throwable ex) {
ProcessExit.exit(ex, "Failure while starting services.", 4);
}
}
}
说明
以上是一个简单的关于dremio DACModule 模块加载的说明,我们可以自己扩展实现不少强大的功能
参考资料
dac/daemon/src/main/java/com/dremio/dac/daemon/DremioDaemon.java
dac/backend/src/main/java/com/dremio/dac/daemon/DACModule.java
dac/backend/src/main/java/com/dremio/dac/daemon/DACDaemonModule.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 代码