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

乔嘉林
清华大学 软件学院