有人可以回答吗?如果节点出现故障,故障转移时间是多少,我确实看到它需要 2 到 3 秒,但我们是否可以控制让它比这更快?如果是的话多少钱。通常,我们不能在应用程序队列上受到这种影响,因为它是如此敏感。
问问题
130 次
1 回答
2
在 YugabyteDB 中,表被共享到平板电脑中,平板电脑使用 Raft(分布式共识协议)在节点之间复制。Raft 还用于为每个 tablet 选举一个 tablet 的 peer 作为领导者。
在典型的情况下,一个节点会有很多片——一些是跟随者角色,一些是领导者角色。当一个节点发生故障时,该节点作为领导者的平板电脑可能会有少量不可用,直到为这些平板电脑选出新的领导者。(注:YugabyteDB 是一个 CP 数据库)。当平板电脑的追随者在一定数量的心跳内没有收到其领导者的消息时,将触发此领导者(重新)选举。控制这一点并因此确定故障转移时间的旋钮是以下 gflag:
raft_heartbeat_interval_ms
(默认 500 毫秒)
leader_failure_max_missed_heartbeat_periods
(6)
换句话说,默认情况下,如果跟随者连续 6 次没有听到领导者的心跳,那么在 6 * ~500 毫秒(默认的心跳间隔)后,即大约 3 秒,新的领导者将被选举出来。
可以覆盖上述设置以减少故障转移时间。但是,必须小心不要让这变得过于激进,因为这可能导致领导者不必要地 ping/pong,即使对于小的网络故障也是如此。
于 2020-01-18T05:39:26.363 回答