gpt4 book ai didi

Cassandra默认配置丢失10秒数据?

转载 作者:行者123 更新时间:2023-12-04 16:59:35 25 4
gpt4 key购买 nike

由于 Commitlog 中的数据每 10 秒后定期刷新到磁盘(由 commitlog_sync_period_in_ms 控制),所以如果所有副本在 10 秒内崩溃,我会丢失所有数据吗?这是否意味着理论上 Cassandra 集群会丢失数据?

最佳答案

如果节点在更新磁盘上的提交日志之前就崩溃了,那么是的,您可能会丢失多达 10 秒的数据。

如果您保留多个副本,通过使用高于 1 的复制因子或拥有多个数据中心,那么大部分丢失的数据将在其他节点上,并且会在修复时在崩溃的节点上恢复。

此外,提交日志可能会在不到 10 秒内写入,如果写入量足够大,可以在 10 秒之前达到大小限制。

如果您想要比这更多的持久性(以更高的延迟为代价),那么您可以将 commitlog_sync 设置从定期更改为批处理。在批处理模式下,它使用 commitlog_sync_batch_window_in_ms 设置来控制批量写入写入磁盘的频率。在批处理模式下,直到写入磁盘才会确认写入。

定期模式的 10 秒默认值是为旋转磁盘设计的,因为它们太慢了,如果阻止等待提交日志写入的确认会影响性能。出于这个原因,如果您使用批处理模式,他们建议为提交日志使用专用磁盘,以便写入头不需要进行任何搜索以尽可能降低增加的延迟。

如果您使用的是 SSD,那么您可以使用更积极的计时,因为与旋转磁盘相比,延迟大大减少。

关于Cassandra默认配置丢失10秒数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31032156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com