暮野云晚
暮野云晚
V1
暮色,旷野,晚云收
2024-12-04 加入
获赞
1
回答
2
文章
0
    心跳这块我还有几个点没想明白,有没有路过的大佬给指点一下 :thinking: 1、我注意到代码中有多个地方调用 register_raft_base_tick() 函数进行注册,虽然有定时任务去重的识别,但为什么要在这么多的地方去注册呢? 2、在业务请求繁忙的情况下,通过 RaftPoller::light_end() 函数默认至少 1ms 发送一次 PeerMsg::Tick(PeerTick::Raft) 消息,这么频繁的驱动心跳任务,是为了在达到心跳消息间隔后尽可能快的发送心跳消息吗? 3、除了 RaftPoller::light_end() 函数会驱动定时任务执行,poll() 函数中接收需要驱动…
    2 个月前
    你好,我这两天看了心跳这块的代码,对机制有了一些了解: 1、register_raft_base_tick() 函数是用来注册 Tick 任务的,其中的定时任务包括了心跳任务。在 TiKV 服务启动时每个 Region 都会调用这个函数来注册定时任务; 2、注册的定时任务都保存在 BatchSystem 的数据结构里,BatchSystem 的 poll() 函数循环驱动状态机处理请求,在每一次循环中调用 RaftPoller::light_end() 函数处理一些轻量级任务,其中就包括注册的 Tick 任务,向 Region 对应的状态机发送 PeerMsg::Tick(PeerTick…
    2 个月前