提交日志同步期
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提交日志同步期相关的知识,希望对你有一定的参考价值。
根据cassandra提交日志同步周期..数据首先进入os缓冲区...然后从os缓冲区,基于提交日志同步周期,缓冲区数据被同步到磁盘中提交日志文件...默认同步周期为10秒......如果服务器在10秒内崩溃了......数据丢失了吗?但是客户端获得了响应,因为当数据被写入os缓冲区中的commitlog缓冲区并且可记忆时...但最终数据丢失,因为系统在10秒窗口内崩溃...我错过了什么?
你没有遗漏任何东西。像Cassandra和Scylla这样的数据库不仅可以在故障情况下权衡可用性,而且像Postgres这样的传统数据库也可以权衡性能的耐久性。您可以将commitlog_sync
选项更改为batch
或减少commitlog_sync_period_in_ms
;请注意,如果执行此操作,最好将commitlog存储在与数据目录不同的介质中。
这背后的原因是耐久性可以通过持久性实现,也可以通过复制实现。典型的Cassandra / Scylla用户通常会使用RF = 3
,并使用QUORUM
的一致性级别进行写入,这样您就需要多台计算机的协同故障才能真正丢失数据。
(免责声明:我是ScyllaDB员工)
我认为你缺少的是数据被写入磁盘上的commitlog和同时记忆,并假设你使用RF> 1且CL> 1(例如仲裁),即使特定节点崩溃,其他副本仍将有数据,以后可以修复。
如果您使用RF> 1且CL = ONE,那么如果节点在同步副本之前崩溃,则数据也将丢失。
如果整个群集出现故障,或者在单个节点群集的情况下,您的客户端可能会返回SUCCESS ACK,但数据将丢失。
欢迎您查看Scylla Architecture文档以便更好地理解:
- http://docs.scylladb.com/architecture/architecture-fault-tolerance/
- http://docs.scylladb.com/architecture/console_CL_full_demo/
以上是关于提交日志同步期的主要内容,如果未能解决你的问题,请参考以下文章
《安富莱嵌入式周报》第279期:强劲的代码片段搜索工具,卡内基梅隆大学安全可靠C编码标准,Nordic发布双频WiFi6 nRF7002芯片