复制组选举
SequoiaDB 巨杉数据库使用改进过的 Raft 选举协议。
在复制组内,所有的节点定期向组内其它成员发送携带自身状态信息的消息,对端节点收到该消息后返回应答消息。节点两两之间通过该消息感知对方的状态,发送的消息称为心跳,其间隔为 2 秒钟。
当主节点发生故障,如主节点所在的机器宕机,其余节点一段时间内收不到主节点心跳后就会发起复制组选举。所有的备节点会进行投票,日志最接近原先主节点的备节点会成为新的主节点。在选出主节点之前,复制组无法提供写操作服务。
例如,复制组内有4个节点,节点 A 是主节点,因为网络中断导致脑裂现象,节点 A 只能与节点 B 通信,节点 C 只能与节点 D 通信。
用户可以通过配置 weight 参数调整节点在复制组选举中的权重。