Apache IoTDB 集群版包含两种角色的节点,ConfigNode 和 DataNode,分别为不同的进程,可独立部署。
集群架构示例如下图:
ConfigNode 是集群的控制节点,管理集群的节点状态、分区信息等,集群所有 ConfigNode 组成一个高可用组,数据全量备份。
注意:ConfigNode 的副本数是集群当前加入的 ConfigNode 个数,一半以上的 ConfigNode 存活集群才能提供服务。
DataNode 是集群的数据节点,管理多个数据分片、元数据分片,数据即时间序列中的时间戳和值,元数据为时间序列的路径信息、数据类型等。
Client 只能通过 DataNode 进行数据读写。
| 名词 | 类型 | 解释 |
|---|---|---|
| ConfigNode | 节点角色 | 配置节点,管理集群节点信息、分区信息,监控集群状态、控制负载均衡 |
| DataNode | 节点角色 | 数据节点,管理数据、元数据 |
| Database | 元数据 | 数据库,不同数据库的数据物理隔离 |
| DeviceId | 设备名 | 元数据树中从 root 到倒数第二级的全路径表示一个设备名 |
| SeriesSlot | 元数据分区 | 每个 Database 包含多个元数据分区,根据设备名进行分区 |
| SchemaRegion | 一组元数据分区 | 多个 SeriesSlot 的集合 |
| SchemaRegionGroup | 逻辑概念 | 包含元数据副本数个 SchemaRegion,管理相同的元数据,互为备份 |
| SeriesTimeSlot | 数据分区 | 一个元数据分区的一段时间的数据对应一个数据分区,每个元数据分区对应多个数据分区,根据时间范围进行分区 |
| DataRegion | 一组数据分区 | 多个 SeriesTimeSlot 的集合 |
| DataRegionGroup | 逻辑概念 | 包含数据副本数个 DataRegion,管理相同的数据,互为备份 |
分区策略将数据和元数据划分到不同的 RegionGroup 中,并把 RegionGroup 的 Region 分配到不同的 DataNode。
推荐设置 1 个 database,集群会根据节点数和核数动态分配资源。
Database 包含多个 SchemaRegion 和 DataRegion,由 DataNode 管理。
元数据分区策略
数据分区策略
IoTDB 使用了基于槽的分区策略,因此分区信息的大小是可控的,不会随时间序列或设备数无限增长。
Region 会分配到不同的 DataNode 上,分配 Region 时会保证不同 DataNode 的负载均衡。
复制策略将数据复制多份,互为副本,多个副本可以一起提供高可用服务,容忍部分副本失效的情况。
Region 是数据复制的基本单位,一个 Region 的多个副本构成了一个高可用复制组,数据互为备份。
完整的集群分区复制的示意图如下:
图中包含 1 个 SchemaRegionGroup,元数据采用 3 副本,因此 3 个白色的 SchemaRegion-0 组成了一个副本组。
图中包含 3 个 DataRegionGroup,数据采用 3 副本,因此一共有 9 个 DataRegion。
每个副本组的多个副本之间,都通过一个具体的共识协议保证数据一致性,共识协议会将读写请求应用到多个副本上。