![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JRaft
文章平均质量分 85
勤径苦舟
书山有路勤为径,学海无涯苦作舟。
展开
-
JRaft--基础--03--实现细节解析之高效的线性一致读
所谓线性一致读,一个简单的例子就是在 t1 的时刻我们写入了一个值,那么在 t1 之后,我们一定能读到这个值,不可能读到 t1 之前的旧值(想想 java 中的 volatile 关键字,说白了线性一致读就是在分布式系统中实现 java volatile 语义)如上图 Client A、B、C、D 均符合线性一致读,其中 D 看起来是 stale read(脏读),其实并不是,D 请求横跨了 3 个阶段,而读可能发生在任意时刻,所以读到 1 或 2 都行。原创 2023-03-05 14:45:13 · 313 阅读 · 0 评论 -
JRaft--基础--02--架构
KV Store 是各种 Raft 实现的一个典型应用场景,JRaft 中包含了一个嵌入式的分布式 KV 存储实现(JRaft-RheaKV)。单个 Raft group 是无法解决大流量的读写瓶颈的,JRaft 自然也要支持 multi-raft-group。单个节点的 JRaft-node 是没什么实际意义的,下面是三副本的 JRaft 架构图。元信息存储,记录 raft 实现的内部状态,比如当前 term、投票给哪个节点等信息。用于存放用户的状态机 snapshot 及元信息,可选。原创 2023-03-05 14:44:04 · 413 阅读 · 0 评论 -
JRaft--基础--01--介绍
优化 raft read 走 raft log 的性能问题,每次 read,仅记录 commitIndex,然后发送所有 peers heartbeat 来确认 leader 身份,如果 leader 身份确认成功,等到 appliedIndex >= commitIndex,就可以返回 client read 了,基于 ReadIndex follower 也可以很方便的提供线性一致读,不过 commitIndex 是需要从 leader 那里获取,多了一轮 RPC。原创 2023-03-05 14:43:08 · 1449 阅读 · 0 评论