DolphinDB的元数据存储在控制节点上。为了保证元数据的高可用,DolphinDB通过配置多个控制节点来组成一个Raft组。组内节点采用Raft协议实现强一致性。即DolphinDB的控制节点组采用raft协议来防止脑裂。
DolphinDB采用多副本机制,相同数据块的副本存储在不同的数据节点上。一个数据库可以包含上百万个分区,分区的多副本之间使用改良的二阶段提交协议实现分区副本的强一致性。当分区副本数为N的时候,在N-1个节点宕机的情况下,保证系统可以持续写入和读取。分区的多副本之间没有采用Raft协议,主要是考虑到海量数据场景下,分区非常多。若采用Paxos或Raft等一致性算法,分区之间的通信比较复杂。