Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 模块化
    • 将 IoTDB 的各个组件模块化,分布式或单机实例均通过这些模块组合而成
  • 扩展性
    • 支持快速(秒级)增加节点,无需迁移数据
    • 支持新增节点后实时分担写入负载
    • 支持数据读写以及磁盘空间使用的负载均衡
  • 高可用
    • 客户端可自动切换
    • 单节点失效不影响集群服务
  • 可观测
    • 集群内置监控服务

集群角色

PartitionNode:管理数据分区表、元数据分区表、节点状态信息



名词介绍汇总


名词缩写解释
ConfigNodeCNode集群配置节点,管理数据分区信息、元数据分区信息、集群节点信息
DataNodeDNode数据节点,管理数据、元数据
NodeInfo
节点状态信息,包括CPU信息、内存容量、硬盘、网络带宽等
Planner
查询计划
VirtualStorageGroupProcesorVSG单机数据存储引擎
MManagerMManager单机元数据管理引擎


集群角色


ConfigNode(CNode):管理数据分区表、元数据分区表、节点状态信息

DataNode(DNode)DataNode:管理数据和元数据


每个 Node 是一个进程,可将多个进程部署到一台机器上,支持更强的灵活性,可适配云环境部署。

...

IoTDB 主要包括以下模块,分布式和单机均可由以下模块组合而成。

  • 执行计划生成器(Planner)
    • SQL 解析器、查询优化器解析器、查询计划生成、查询优化
  • 查询引擎(QueryExecutor)
    • 原始数据查询、聚合查询等
  • 存储引擎(VSG)
    • TsFile 数据文件、数据合并、数据同步
  • 元数据管理引擎(MManager)
    • 管理一部分元数据,包括设备、时间序列的增、删、查
  • 客户端请求处理模块(ClientRequestHandler)
    • 管理读写请求的序列化反序列化,管理线程的并发模型。管理权限。
  • 集群请求处理模块(ClusterRequestHandler)
    • 处理 DataNode 发来的读写和管理请求。
  • 分区表管理引擎(ConfigerManager)分区表管理引擎(PTManager)
    • 节点状态信息、数据分区表、元数据分区表、扩缩容、负载均衡
  • 协调者(Coordinator)
    • 接收执行计划,并判断此计划是本地执行还是远端执行。对于写入计划,交给共识模块进行多副本写入。对于查询计划,负责执行计划的拆分、分发读写请求、合并结果集。
  • 共识模块(Consensus)
    • 数据复制,根据一致性级别调度读写请求到对应副本

...

  • 执行计划生成器
  • 查询引擎
  • 存储引擎
  • 元数据管理引擎
  • 客户端请求处理模块

分布式模块

  • ConfigNodePartitionNode
    • 分区表管理引擎
    • 共识模块
    • 集群请求处理模块
  • DataNode
    • 执行计划生成器
    • 查询引擎
    • 存储引擎
    • 元数据管理引擎
    • 客户端请求处理模块
    • 协调者
    • 共识模块

...

每个存储组对应 集群总核数/副本数个 VSG 共识组,并且对应 M 个 MManager 共识组


...

ConfigNode


功能:分区表管理者维护节点状态信息、数据分区表、元数据分区表,同时负责集群扩缩容和负载均衡。

...

维护当前用到的分区表缓存,包括数据分区表和元数据分区表,以避免写入频繁访问 PartitionNode。ConfigNode。

【需详细设计缓存一致性维护】

元数据持久化存储

每个 VSG 内部持久化存储其写入数据对应的元数据。

...

  • 数据写入时可在本地进行数据类型检查,避免每次写入访问 PartitionNode ConfigNode 和 MManager
  • 查询时进行本地序列的存在性检查
    • 场景:查询 d1.s1 时,分区表节点会告知协调者此设备所在的设备组所在的所有节点,其中某些节点可能不存在此序列,通过本地元数据可快速识别,避免访问每个数据文件



客户端



网络通信


节点增删

...


ConfigNode 增删流程

DataNode 增删流程


读写流程

数据管理:DML

...