sofastack / sofa-jraft

A production-grade java implementation of RAFT consensus algorithm.
https://www.sofastack.tech/projects/sofa-jraft/
Apache License 2.0
3.56k stars 1.14k forks source link

如果宕机是有可能丢数据吗? #1019

Closed ye-xiaowei closed 1 year ago

ye-xiaowei commented 1 year ago

我看到你们官方的文档里提到了一个优化是异步的批量刷入磁盘,文档链接

本地 IO batch 写入 要保证日志不丢,一般每条 log entry 都要进行 fsync 同步刷盘,比较耗时,SOFAJRaft 中做了合并写入的优化。

是否可以理解为牺牲一定安全性换来性能

killme2008 commented 1 year ago

group commit 是常见的减少fsync调用的优化技术,并不会导致数据丢失。他只是攒一批去调用一次 fsync,不是不调用。在 fsync 之前,这些请求并不会返回成功,而是等待。

ye-xiaowei commented 1 year ago

group commit 是常见的减少fsync调用的优化技术,并不会导致数据丢失。他只是攒一批去调用一次 fsync,不是不调用。在 fsync 之前,这些请求并不会返回成功,而是等待。

懂了,那是有牺牲一定延迟提高吞吐量吗?

fengjiachun commented 1 year ago

不会牺牲延迟,因为攒批过程中没有 ”延时“ 等待,只是把同时发起的调用合并到一起而已

ye-xiaowei commented 1 year ago

感谢两位大佬 @killme2008 @fengjiachun