自 Filter source是什么意思 继续讨论:
之前在这个帖子中分析过:“在 tikv 中 raft 心跳是通过 raftstore 发送的,raftstore 发送的 raftlog 信息需要落盘,当磁盘出现卡顿时,心跳会因为发送不出去,而触发 raft 选举。”
请问这个append raftlog超时触发raft选举的机制在tikv或者pd代码中有体现吗?谢谢
自 Filter source是什么意思 继续讨论:
之前在这个帖子中分析过:“在 tikv 中 raft 心跳是通过 raftstore 发送的,raftstore 发送的 raftlog 信息需要落盘,当磁盘出现卡顿时,心跳会因为发送不出去,而触发 raft 选举。”
请问这个append raftlog超时触发raft选举的机制在tikv或者pd代码中有体现吗?谢谢
在 https://github.com/tikv/tikv/blob/master/components/raftstore/src/store/fsm/peer.rs#L1025 这儿会注册一个超时事件,定期驱动 raft 心跳。
https://github.com/tikv/tikv/blob/master/components/raftstore/src/store/fsm/peer.rs#L1083 这里会调用 raft-rs 的 tick() 函数来驱动 raft 状态机。剩下的逻辑在 https://github.com/tikv/raft-rs/blob/master/src/raw_node.rs#L281
感谢!这种情况下是会导致 if self.election_elapsed >= self.election_timeout 超时吗(https://github.com/tikv/raft-rs/blob/master/src/raft.rs#L1012)?
另外“在 tikv 中 raft 心跳是通过 raftstore 发送的”,为什么发送heartbeat会需要写raftstore呢?这个在代码中有体现吗?谢谢啦
更为细致的源码解析类的问题,建议加入 TiKV 的 SIG, TiKV Engine SIG 是继 Coprocessor SIG 之后成立的第二个 TiKV SIG 社区组织,主要职责是对 TiKV 的存储引擎的未来发展进行讨论和规划,并进行相关开发和维护。