Shard Splitting

Shard是数据的一个分区或分片。分布式系统通常将庞大的数据切割为碎片并将之存储集群内不同的机器上,以此增强整体的存储能力并承担更大的工作负载。每个Shard都会有几个Replica作为副本,来维持高可用性,而一组Replica便组成了Raft-Group

在MatrixCube的设计框架中,创建的新表是一个Shard。根据用户定义的容量限制参数,Shard有相应的大小限制。
随着表中数据量不断增加,它将超过Shard的容量限制。此时,将发生Shard Splitting,原始的Shard将被切割成两个Shard,每个Shard有相对相等的存储量。与此同时,该Raft-Group中其他所有Replica将以相同的行为分裂。原来的Raft-Group将被移除,代之以两个新的Raft-Group
一旦两个新的Raft-Groups成立,将立即举行re-election操作。在大多数情况下,原始的Replica leader仍然会被选为leader。
下面的图表可以形象地解释这一机制: Shard Splitting