Closed wadeliuyi closed 5 years ago
acceptor收到比当前节点的instanceid还大的消息,可能只是网络乱序导致的,并不表示该节点落后很多。 “落后很多”需要一定时间间隔,所以Timer_Learner_Askforlearn_noop事件定期发起即可。 “落后很多”才启动learner比较妥当,不然LearnerSender被频繁占用,服务不了真正落后的节点。
acceptor收到比当前节点的instanceid还大的消息,可能只是网络乱序导致的,并不表示该节点落后很多。 “落后很多”需要一定时间间隔,所以Timer_Learner_Askforlearn_noop事件定期发起即可。 “落后很多”才启动learner比较妥当,不然LearnerSender被频繁占用,服务不了真正落后的节点。
非常感谢
系统启动后没有判断当前的instanceid是不是最新的,然后learn也没有主动获取最大的instanceid,而是注册了Timer_Learner_Askforlearn_noop定时器,在当前节点的acceptor收到请求后判断如果比当前节点的instanceid大,也不会主动去learn,而是不处理,这样Timer_Learner_Askforlearn_noop定时器就会超时,然后获取最新的instanceid,进入学习流程。 为什么要这样设计?为什么不在acceptor看到最新的instanceid后直接启动对齐流程呢?