6. SOFAJRaft源码分析— 透过RheaKV看线性一致性读
开篇 其实这篇文章我本来想在讲完选举的时候就开始讲线性一致性读的,但是感觉直接讲没头没尾的看起来比比较困难,所以就有了RheaKV的系列,这是RheaKV,终于可以讲一下SOFAJRaft的线性一致性读是怎么做到了的。所谓线性一致性,一个简单的例子是在 T1 的时间写入一个值,那么在 T1 之后读一定能读到这个值,不可能读到 T1 之前的值。 其中部分内容参考SOFAJRaft文档: SOFAJRaft 线性一致读实现剖析 | SOFAJRaft 实现原理 SOFAJRaft 实现原理 - SOFAJRaft-RheaKV 是如何使用 Raft 的 RheaKV读取数据 RheaKV的读取数据的入口是DefaultRheaKVStore的bGet。 DefaultRheaKVStore#bGet public byte[] bGet(final String key) { return FutureHelper.get(get(key), this.futureTimeoutMillis); } bGet方法中会一直调用到DefaultRheaKVStore的一个get方法中: DefaultRheaKVStore#get private CompletableFuture<byte[]> get(final byte[] key, final boolean