首页 > 其他分享 >通过DACModule 模块学习dremio 服务模块依赖关系之 bootstrap

通过DACModule 模块学习dremio 服务模块依赖关系之 bootstrap

时间:2023-01-28 20:55:25浏览次数:42  
标签:src dremio java bootstrap DACModule 模块 main com

以前有简单介绍过dremio 的DACModule 模块,核心就是进行服务的启动以及依赖管理维护,接口实现了包含了bootstrap 以及build
区别在于bootstrap管理的是一些需要提前准备好的服务(比如协调服务,master 选举服务,还有就是一些引擎相关的,但是社区版没有实现)

bootstrap 依赖服务

bootstrap 依赖的服务很少,MasterElectionService 会依赖协调服务,RequestContext 会依赖租户以及一些项目信息

  • ClusterCoordinator
    都是自己创建的,对于不同的环境会需要不同的,包含了嵌入式zk,外部zk 以及无master 模式的
    我们一般使用的是嵌入式(单机模式)以及外部zk(集群模式)
  • MasterElectionService
    MasterElectionService 会依赖协调服务进行master 选举处理
 
 public MasterElectionService(Provider<ClusterCoordinator> clusterCoordinator) {
    this.clusterCoordinator = Preconditions.checkNotNull(clusterCoordinator);
  }
  • EngineId 以及SubEngineId
    此实现社区版为空,对于企业版以及cloud 此功能是一个很强大的能力,可以让我们自己选择不同的执行引擎,具体使用的地方包含了执行器选择(ExecutorSelectionServiceImpl)我们可以自己扩展实现类似的能力
  • RequestContext
    实际上应该是一个请求级别的服务,但是目前官方对于社区版的实现是直接固定了几个值,当然也是可以扩展的,方便更好的支持租户以及项目的能力
    官方的实现基于了threadlocal 进行数据存储

说明

以上是一个简单的关于DACModule bootstrap 方法的介绍,同时服务模块依赖关系的学习,我们可以更好的学习dremio 模块的关系以及进行扩展

参考资料

dac/backend/src/main/java/com/dremio/dac/daemon/DACModule.java
dac/backend/src/main/java/com/dremio/dac/daemon/DACDaemonModule.java
sabot/kernel/src/main/java/com/dremio/exec/server/ContextService.java
common/src/main/java/com/dremio/context/RequestContext.java
dac/backend/src/main/java/com/dremio/dac/service/exec/MasterElectionService.java
services/exec-selector/src/main/java/com/dremio/service/execselector/ExecutorSelectionServiceImpl.java
services/exec-selector/src/main/java/com/dremio/service/execselector/ExecutorSelectionServiceImpl.java

标签:src,dremio,java,bootstrap,DACModule,模块,main,com
From: https://www.cnblogs.com/rongfengliang/p/17071253.html

相关文章

  • Python 中的模块
    Python模块是一个Python文件,定义了各种功能接口。把复杂的功能封装为模块(又称为库),将功能实现的细节隐藏起来,使用该模块(库)的程序员不需要了解实现的细节。通过调用模块封......
  • paramiko模块及公钥私钥
    目录paramiko模块paramiko模块基本使用公钥私钥paramiko模块使用公钥私钥paramiko模块上传下传文件paramiko模块上传下传封装成类paramiko模块paramiko模块功能:通过pyth......
  • 振弦采集模块配置工具VMTool的MODBUS 工具模块
    振弦采集模块配置工具VMTool的MODBUS工具模块(1)寄存器查看此功能模块提供标准的MODBUS协议寄存器显示及单个寄存器修改功能,通过点击扩展功能区的【MODBUS】标签切换......
  • dremio ClusterCoordinator 服务简单说明
    dremioClusterCoordinator主要是处理集群任务协商的,比如那些服务可以在什么节点上运行,以及对于查询具体这么执行,对于元数据应该如果存储以及元数据如何进行刷新,同时还包含......
  • 嵌入 WebAssembly 运行时和实例化 WebAssembly 模块的几大要素
    ​​嵌入WebAssembly运行时和实例化WebAssembly模块的几大要素​​ 下面这段代码忽略了错误处理机制,介绍了如何在Go语言开发的宿主程序中嵌入WebAssembly.fun......
  • 工业物联网方案中数据采集模块的作用
    随着工业4.0的发展,工业物联网近几年快速发展,不断改变着传统工业领域的发展方向。工业物联网要实现设备和云端的连接、数据的传递,所以在这过程中有两大模块是缺一不可,一方面......
  • [转]python发邮件smtplib和email模块详解
    本文转自:https://www.cnblogs.com/auguse/articles/14578247.htmlSMTP(SimpleMailTransferProtocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,......
  • ESA SNAP中超分模块处理Sentinel-2数据效果图
    原文:https://view.inews.qq.com/k/20200906A0GEO600?web_channel=wap&openApp=false欧空局SNAP中超分辨率(SuperResolution)扩展模块可以将Sentinel-2数据20米和60米波段进......
  • 用状态机实现通用多字节SPI接口模块
    这次设计一个通用的多字节SPI接口模块,特点如下:可以设置为1-128字节的SPI通信模块可以修改CPOL、CPHA来进行不同的通信模式可以设置输出的时钟 状态转移图和思路与多......
  • 振弦采集模块参数配置工具的使用
    振弦采集模块参数配置工具的使用 通常情况下,在计算机端对模块进行测试、读写时,可使用一些通用的免费工具完成,如基于MODBUS通讯协议的调试工具MODSCAN、通用串口调试助手......