You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@iotdb.apache.org by Jialin Qiao <qj...@mails.tsinghua.edu.cn> on 2019/10/18 10:31:23 UTC
Design of IoTDB Cluster
Hi,
As the single-node version of IoTDB is stable, it's time to design the cluster.
I would like to open a thread discussing the design of IoTDB cluster.
There are some initial ideas, welcome to join and discuss:
【Architecture】
shared-nothing
【RPC framework】
thrift
【Design goal】
- Having recommended configuration, which can deal with most common scenarios
- When Facing extreme scenarios, we have solutions to guarantee the system the undead
【System information (ip and port of all nodes in the cluster)】
- How to store: Store full copy in the config file in each node, update in real-time.
- Update protocol: Raft, each log contains the whole information.
【Metadata and schema management】
Metadata (The data allocation info) : partition -> nodes
Schema: The schema tree. For example: root.sg1.d1.s1, double, rle, snappy
- Partition: storage group
- Allocation: consistent hashing
- Replication factor: 2N+1 (3 or 5 may be enough)
- Update Protocol: Raft
【Data management】
Partition: storage group + time range
Allocation: Allocation manager (we can apply different allocation strategy)
【Config file】
## If it is cluster Initialization, it needs to be the all nodes. Otherwise (scale out) it is any one or more living nodes in the cluster.
hosts: (ip:port)+
【Script】
- start-cluster.sh : Run in each node when a cluster initialization
- stop-cluster.sh : Run in arbitrary living node in the cluster
- start-node.sh : Run in the newly added node
- remove-node.sh ip port : Run in arbitrary living node in the cluster
Best,
--
Jialin Qiao
School of Software, Tsinghua University
乔嘉林
清华大学 软件学院