对于rheakv分为:kv数据存储目录以及raft log存储目录。但是参与者之间数据同步处理的是日志目录。那kv数据目录怎么同步了
zxuanhong opened this issue · 1 comments
zxuanhong commented
Your question
- 对于rheakv分为kv数据存储目录以及raft log存储目录,但是节点数据同步处理的是日志目录。那kv数据目录怎么同步了
- 是否是依赖log目录回放,然后执行kv数据存储方法,也就是log复制后会调用对于的kv存储引擎
- 如果不处理kv数据存储复制,那怎么保证同一个分区所有参与节点kv数据保持一致了
- 对于真实环境,能否这两个合并。基本相当于同一个参与者数据存储了两份。那数据很大的情况磁盘是不是也会暂用很大。
- 或者说log是否有删除机制。对于有些情况。
Environment
- SOFAJRaft version:
- JVM version (e.g.
java -version
): - OS version (e.g.
uname -a
): - Maven version:
- IDE version:
fengjiachun commented
看下 rheakv 状态机代码:
首先 jraft-core 会触发 Snapshot load,rheakv 从 Snapshot 恢复一部分数据,另一部分最新数据通过状态机的 onApply
恢复。整个机制均由 jraft-core 触发。
log 是 raft log,默认会定期做 Snapshot,完成 Snapshot 会对日志进行裁剪,具体先看下文档,文档中包含的不在这里重复了:https://www.sofastack.tech/projects/sofa-jraft/jraft-user-guide/