首页 > 其他分享 >dremio DremioDaemon 简单说明

dremio DremioDaemon 简单说明

时间:2023-01-19 20:44:17浏览次数:32  
标签:dremio DACDaemon DremioDaemon daemon 简单 config final

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

标签:dremio,DACDaemon,DremioDaemon,daemon,简单,config,final
From: https://www.cnblogs.com/rongfengliang/p/17062097.html

相关文章

  • ecs-lite 源码简单分析
    初学typescript,分析的不到位欢迎指正。 ecs-lite基于ts实现的纯ecs库,可用于学习交流及H5游戏开发!https://gitee.com/aodazhang/ecs-lite?_from=gitee_search文......
  • dremio 的配置处理简单说明
    dremio的配置基于了typesafe的config参考配置模块级别的配置sabot-module.conf dremio.classpath.scanning{base.classes+="com.dremio.dac......
  • dremio DACModule 模块加载简单说明
    dremioDACModule主要是模块加载初始化以及组合,是一个比较重要的模式,同时也支持基于配置进行加载(有点很多了,后边简单介绍)加载机制支持配置加载可以通过dremio运行配......
  • MetadataReader、ClassMetadata、AnnotationMetadata的简单使用
    在Spring源码中有很多场景会去解析类的信息,比如类名、类中的方法、类上的注解,这些都可以称之为类的元数据,在Spring中对类的元数据做了抽象,并提供了一些工具类。MetadataRead......
  • 一个想活得简单的程序猿的2022年终总结!
    前言今年的总结相比以往来说,可写的太少了,但看到我17年开始写的年终总结,已定下每年写下的承诺,因此即便可写的不多,但是还是写下吧,毕竟又过了一年,总有东西会留下!今年事件......
  • 简单分析Tomcat中WebappClassLoader的loadClass方法
    tomcat自定义在Java的双亲委派机制的基础上进行了修改。甚至于为了各个服务直接相互隔离,直接打破了双亲委派机制。那么什么叫打破双亲委派机制呢?我们都知道tomcat是一个容......
  • GO语言实现一个简单的命令行词典
    一个命令行词典,使用浏览器中的开发者工具进行抓包。拿到接口后再在IDE中进行实现。抓包打开检查后找到dict查看状态代码是否为POST,复制dict选择复制为cURL(bash)拿到接......
  • [简单DP+高精度]围墙重建
    题目描述为了给同学们营造一个良好的学习环境和方便学校的管理,市政府准备对小W就读的学校进行重新规划,占地面积将再次扩大。学校通过领导会议决定,重建学校的围墙。由......
  • 位,字节,字, 二进制,八进制,十进制,十六进制简单梳理
    定义:位(bit):也叫比特,计算机中最小的计量单位;1比特也即1个二进制位字节(Byte):1个字节=8比特(位bit)=8个二进制位=2个16进制位字(word):UTF-8下一个汉字由三个字节组成;其......
  • 05-工厂模式与简单工厂模式
    05-工厂模式与简单工厂模式简单工厂模式计算器实现packagecom.gof.simpleFactory;/***功能描述**@since2023-01-18*/publicabstractclassOperation{......