Closed shiftyman closed 5 years ago
另外,测试环境磁盘的测试数据方便提供下吗?
是的 raft log 是同步刷盘的,benchmark 的配置见这里 https://github.com/alipay/sofa-jraft/blob/master/jraft-example/config/benchmark_server.yaml
磁盘的测试数据?没懂是什么意思?
指磁盘的iops、throughput等
不好意思当时没保留这些数据
请教一个问题,RheaKV的状态机RocksRawKVStore,默认配置为sync=true,有必要吗? 状态机的数据是每次重启都会清空,通过log和snapshot恢复的,那么是否还需要sync=true? 如果sync=false,对于snapshot会不会有影响?比如snapshot得到的数据可能是不完整的?
另外,3节点的raft,还有没有必要raft log的sync=true?
麻烦指教~
请教一个问题,RheaKV的状态机RocksRawKVStore,默认配置为sync=true,有必要吗? 状态机的数据是每次重启都会清空,通过log和snapshot恢复的,那么是否还需要sync=true? 如果sync=false,对于snapshot会不会有影响?比如snapshot得到的数据可能是不完整的?
另外,3节点的raft,还有没有必要raft log的sync=true?
麻烦指教~
Hi,指教不敢当 https://github.com/facebook/rocksdb/wiki/How-to-backup-RocksDB%3F#advanced-usage
rocksdb 文档也有提到,sync=false 时 backup 可能出现不一致 (当机器 crash 重启的时候),此时 snapshot 就会不一致,rheakv 中还有一种 checkpoint 的 snapshot 机制,我理解都会因为 sync=false而导致数据不一致
但是对于multi-raft-group 的情况,rheakv 是采用 ingestSstFiles 的方式做 snapshot,这种情况 sync=false 是可以的没有问题
对于 raft log,我觉得 sync 都应该为 true
emmm 纠正一下,backup 的话应该只要 BackupableDBOptions::sync=true 就可以了,WriteOptions::sync=false 应该也是可以的
@shiftyman 我提了一个 issue,考虑将 RocksRawKVStore 的 sync 默认值改为 false,也同时考虑关掉 WAL
nice!这个改动是非常好的~ 下面还想请教下,如果raft log sync = false,那么对于非大多数同时宕机的情况,会有影响吗?一台机丢了raft log,貌似也可以同步回来?
raft log 我是这样想的 sync = true 时多数派甚至全部机器 crash 掉,虽然集群是不可用的,但是数据是不会丢失的; sync = false 的话全部机器 crash 掉可能就导致已经 apply 到状态机的数据以及 raft log 全部丢掉了。
另外对于 leader 来讲,raft log 形成多数派才 apply,一个 follower 在应答了 AppendEntries 后却因为机器 crash 丢掉了 log,这很奇怪
你说的有理,如果follower丢掉了,可能导致已commit数据丢失的。
如题,请问benchmark时raft log是同步刷盘吗?