面试题答案
一键面试1. Tombstone机制的工作原理
当在Cassandra中执行数据删除操作时,并不会立即从磁盘上物理删除数据。而是会创建一个墓碑标记。这个墓碑标记会与要删除的数据关联,记录下数据被删除的时间戳等相关信息。其他节点在进行数据同步时,也会接收到这个墓碑标记。这样,集群中的所有节点都知道该数据已被删除。
2. 在数据删除操作中的作用
- 数据一致性:确保集群中所有节点都知晓数据已被删除,避免部分节点仍保留旧数据,维持数据的一致性状态。
- 延迟删除:由于Cassandra是分布式系统,数据分布在多个节点上,立即物理删除数据可能导致复杂的一致性问题。墓碑机制允许在合适的时机再进行真正的删除,而在这期间,各节点都能根据墓碑信息达成数据已删除的共识。
3. 默认情况下Cassandra对墓碑的清理工作
- 墓碑高水位线(Tombstone High Water Mark, THWM):Cassandra通过跟踪墓碑的数量来触发清理操作。当一个SSTable(Sorted String Table,Cassandra的数据存储结构)中墓碑数量达到一定比例(默认为20%),这个SSTable就会被标记为需要压缩。
- 压缩(Compaction):Cassandra会在后台定期进行压缩操作。在压缩过程中,包含大量墓碑的SSTable会与其他SSTable合并。在合并时,被墓碑标记的数据不会被复制到新的SSTable中,从而实现了墓碑的清理,即真正从存储中移除已删除的数据。
- 墓碑生存时间(TTL, Time To Live):每个墓碑都有一个关联的TTL,默认值为10天。超过这个时间后,即使墓碑数量未达到触发压缩的比例,在下次压缩时,对应的墓碑及其关联的数据也会被清理。