follower的主流程就比较简单了,一个是处理leader的写log的请求,另外就是处理leader的心跳了,应用到状态机了。非常的简单。
1 接收leader的写log的请求
FollowerStableClosure的handleAppendEntriesRequest
image.png
可以看到这里只是写日志而已
2 应用到状态机
这里就是心跳的请求了。心跳的请求可以理解为特殊的写log的请求,只是data为空,其他的没区别。
还是FollowerStableClosure的handleAppendEntriesRequest
image.png image.png
所以follower的状态机可见,是要比leader晚一个心跳间隔时间的。这样虽然降低了一些实时性,但是可以减少很多请求,提高了吞吐率。不然每个都再通知一遍,是要多很多的请求的。
网友评论