前言:
分析iotdb 内部原理以前,我们需要对 iotdb 整体的运行进行个说明,
参考以前的文件,iotdb的集群部署架构如下:

image.png
datanode , confignode 都属于一个 java 进程:
confignode : 好多年以前 zk 盛行的时候, 这里的 confignode 有点类似 zk 的作用。
datanode : 主要是用于存储元数据的。
confignode 数据目录:
.
.
├── consensus
│ └── 47474747-4747-4747-4747-000000000000
│ ├── current
│ │ ├── log_0-20848
│ │ ├── log_inprogress_20849
│ │ ├── raft-meta
│ │ └── raft-meta.conf
│ ├── in_use.lock
│ └── sm
└── system
├── confignode-system.properties
├── procedure
├── roles
├── udf
│ └── ulog.txt
└── users
└── root.profile
9 directories, 8 files
consensus 目录里面存储的是 confignode 采用 raft 协议 生成的日志信息
system 目录里面主要是 一些配置信息。
所以,我们看到,confignode 里面是基本上不存储 iotdb 的数据的。他只是相当于 zk 的作用。
datanode :
我们可以看到, datanode 里面主要存储的 iotdb 的数据,数据分为如下的形式:
-
nodedata_dir
-
consensus
data_region
schema_region
-
data
-
sequence -- 顺序写入的数据
-
root.metadata -- 存储组的名字
-
3 --- dataRegionId
-
0 -- timePartition
xx.tsfile
xx.tsfile.resource
-
-
root.metadata -- 另外的存储组
……
-
-
unsequence -- 非顺序写入数据
- 和上面一致
-
-
system
-
schema
- schema 相关的信息
-
storage_groups
- sg 相关的
-
wal
wal 日志相关的
-
总结
1、 iotdb 相关的数据主要存储与 datanode 上, confignode 起到的作用类似 zk的
2、 现在的分布式系统,基本上面用的都是 raft 解决方案, 需要对 raft 有一定的了解