首页 > 其他分享 >dremio ioc 机制简单说明

dremio ioc 机制简单说明

时间:2023-01-29 21:45:32浏览次数:57  
标签:dremio java guice com Binder 机制 ioc

dremio 不对服务的依赖管理以及处理没有直接使用google guice,而是dremio 自己包装了一个类似guice的ioc 能力

提供的能力说明

因为对于ioc 来说需要包含不同的几种服务注入模式(属性注入,构造函数注入),服务也会包含不同的scope (单例,实例,provider模式)
同时为了处理不同注入注解的处理,dremio 也包装了自己的处理,相比直接使用guice dremio 也包装了不少其他的能力(remove,replace )

SingletonRegistry参考类图

SingletonRegistry 是对于服务的直接使用(ioc 以及对于ioc 的扩展能力),下图是提供的能力以及继承关系

 

 

说明

dremio 对于ioc 的处理核心是为了服务dremio 自己的service 机制,相对传统的ioc 机制扩展了不少,简单了解dremio 的ioc 机制有助于更好的学习dremio 源码
当然dremio 也是可以支持将guice 的ioc 能力集成到系统中的,主要是Binder 中的,接口定义如下,目前官方代码中并没有直接传递Injector的,主要是在测试代码
中使用到了,所以dremio 部分源码我们看起来比较杂乱,不像trino 代码很清晰(遵循了guice 的实践玩法)

 
public interface Binder extends BindingCreator, BindingProvider {
  /**
   * Temporary way to register a Guice Injector with Binder as a fallback mechanism
   *
   * @param injector the Guice instance to use as an fallback
   */
  void registerGuiceInjector(Injector injector);
}

参考资料

common/src/main/java/com/dremio/service/BinderImpl.java
common/src/main/java/com/dremio/service/Binder.java
common/src/main/java/com/dremio/service/SingletonRegistry.java
sabot/kernel/src/test/java/com/dremio/exec/server/SabotNode.java

标签:dremio,java,guice,com,Binder,机制,ioc
From: https://www.cnblogs.com/rongfengliang/p/17073899.html

相关文章

  • 炉石传说 酒馆战棋 积分保护机制Developer Insights: Hearthstone Battlegrounds Rati
    https://hearthstone.blizzard.com/en-us/news/23523064BlizzardEntertainment09/28/2020 Greetings!I’mTian,aLeadDataScientistontheHearthstoneteam......
  • Python 的垃圾回收机制【译】
    几乎所有的高级编程语言都有自己的垃圾回收机制,开发者不需要关注内存的申请与释放,Python也不例外。Python官方团队的文章https://devguide.python.org/internals/garba......
  • Java类加载器与双亲委派机制
    类加载器顶级类加载器:BootStrapClassLoader负责加载%JAVA_HOME%路径下lib文件夹中的jar包和class文件扩展类加载器:ExtClassLoader负责加载%JAVA_HOME%路径下lib文件夹......
  • day12-实现Spring底层机制-02
    实现Spring底层机制-023.实现任务阶段13.1知识拓展-类加载器Java的类加载器有三种:Bootstrap类加载器-----对应路径jre/libExt类加载器-----对应路径jre/lib/e......
  • 通过DACModule 模块学习dremio 服务模块依赖关系之 bootstrap
    以前有简单介绍过dremio的DACModule模块,核心就是进行服务的启动以及依赖管理维护,接口实现了包含了bootstrap以及build区别在于bootstrap管理的是一些需要提前准备好的......
  • Redis的同步机制
    Redis可以使用主从同步,从从同步。第一次同步时,主节点做一次bgsave,并同时将后续修改操作记录到内存buffer,待完成后将RDB文件全量同步到复制节点,复制节点接受完成后将RDB镜像......
  • nfs-ganesha 数据恢复机制
     对于集群式ganesha之前,是需要先执行命令来初始化,否则ganesha无法启动。ganesha-rados-grace--nsganesha--poolganeshaaddnode01node02node03打印节点信息:gan......
  • ReentrantLock中的阻塞队列与唤醒机制
    阻塞的状态不是被创建后就会进入阻塞形态的    即进入无限期等待,即使其他线程调用了interrupt方法也无法将其唤醒,除非有其他线程释放了锁,并且该线程拿到了锁,才会......
  • 引子 - 实现轻量的 ioc 容器
    IoC反转控制原则也被叫做依赖注入DI,容器按照配置注入实例化的对象.假设A的相互依赖关系如下图,如何将A对象实例化并注入属性.本文将实现一个轻量化的IoC......
  • dremio ClusterCoordinator 服务简单说明
    dremioClusterCoordinator主要是处理集群任务协商的,比如那些服务可以在什么节点上运行,以及对于查询具体这么执行,对于元数据应该如果存储以及元数据如何进行刷新,同时还包含......