Closed Linary closed 4 years ago
@Linary 这是状态机过载了,提交到 FSMCaller 的任务超过了他的处理能力,首先可以看下 metric,看看状态机处理的耗时在哪里,参考 https://www.sofastack.tech/projects/sofa-jraft/jraft-user-guide/ 第8节 metric 监控。 其次可以适当加大 RaftOpionts 的 disruptorBufferSize(默认 16384)
@killme2008 感谢回复,我再请教关于一个日志复制的问题。
leader在收到来自客户端的请求后,会向本地日志追加条目并向所有follower发送AppendEntries RPC,在收到大多数响应后将该条目应用到状态机并回复响应给客户端。
我从 NodeImpl 的 apply(Task) 方法开始跟踪代码,看到了:
这条链路里我没有看到 leader 向所有 follower 发送 AppendEntries RPC 的代码,请问是我跟的有遗漏还是有别的什么机制来实现的发 RPC 消息?
AppendEntries 完全是依靠 replicator 去完成的,某个节点成为 leader 后会为每一个 follower/learner 启动一个 replicator,由 replicator 负责日志复制。
关于复制可以看下这篇文章 https://www.cnblogs.com/luozhiyun/p/12005975.html
这个错是表示follower节点应用日志的速度跟不上leader发日志的速度吗?