很多人看代码的时候,可能比较疑惑,为什么要加读写锁。 raft处理写请求的流水线的消费者都是单线程的,完全没有并发问题,但是还要处理读请求了,如...
收录了9篇文章 · 15人关注
很多人看代码的时候,可能比较疑惑,为什么要加读写锁。 raft处理写请求的流水线的消费者都是单线程的,完全没有并发问题,但是还要处理读请求了,如...
jraft为了高性能,全流程都使用了Disruptor来做异步批量的处理 1 异步 从入口的NodeImpl类的apply方法就可以看到使用了异...
一致性读就是java的vaoilet的意思,就是写入之后再去读,一定能读到刚刚写入的值。 这就意味着读也只能去leader,因为follower...
随着时间越长,raft的log就越多,占用磁盘多,对后面加入的follower跟上leader也是个灾难。所以就有个快照机制,合并一条记录的多次...
raft收到请求,首先做的事情其实就写log了。jraft中是通过LogManagerImpl来实现的 日志入口LogEntryAndClosu...
1 定时器,一直没收到leader的心跳,就尝试选举自己 2 预选 如果超过半数以上预选成功,才开始正式选举自己。预选的只是请求中的term加...
follower的主流程就比较简单了,一个是处理leader的写log的请求,另外就是处理leader的心跳了,应用到状态机了。非常的简单。 1...
1 收到client请求 先是rpc的请求处理,最后会到NodeImpl的apply方法第一步自然是写log,到LogEntryAndClosu...
1 raft要达成一致,是需要半数以上的节点同意的,但是这个逻辑在jraft中非常的隐蔽。 这个逻辑是在Ballot类,在init方法中我们看到...
专题公告
jraft源码阅读