MST
星途 面试题库

面试题:HBase 事务并发控制下的一致性模型与容错策略

在 HBase 事务并发场景中,一致性模型对于保证数据的正确性至关重要。请说明 HBase 所遵循的一致性模型,以及在出现故障(如节点崩溃、网络分区)时,如何结合一致性模型来设计有效的容错策略,以确保事务的最终一致性和数据完整性。
20.6万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试

HBase 一致性模型

HBase 遵循的是最终一致性模型。在 HBase 中,数据写入首先会进入 WAL(Write-Ahead Log)和 MemStore 中。当 MemStore 达到一定阈值时,会刷写到 HFile 中。由于数据的更新并非即时同步到所有副本,所以不同客户端读取数据时,可能会读到不同版本的数据。但是,随着时间推移,HBase 内部的复制和同步机制会保证所有副本的数据最终达到一致。

故障时基于一致性模型的容错策略

节点崩溃

  1. WAL 恢复:当节点崩溃后,重启时会从 WAL 中重放未持久化到 HFile 的数据修改操作。因为 WAL 是按顺序写入的,所以可以确保崩溃前的所有写操作都能被恢复,保证数据的完整性。
  2. 副本修复:HBase 采用多副本机制(通常为 3 个副本)。主副本所在节点崩溃后,从副本会被提升为主副本继续提供服务。同时,HBase 会在其他节点上重新创建缺失的副本,以维持副本数量,确保数据的冗余和可用性。这个过程基于 HBase 的最终一致性模型,新创建的副本会逐渐与其他副本同步数据,最终达到一致状态。

网络分区

  1. 分区内处理:在网络分区期间,每个分区内的节点继续处理本地的读写请求。由于 HBase 的最终一致性模型,在每个分区内数据的读写操作可以正常进行,只是分区之间的数据同步暂时中断。
  2. 分区合并:当网络分区恢复后,HBase 会启动数据同步过程。不同分区间的数据差异会通过复制和合并操作进行修复。例如,通过比较不同分区中数据的版本号等信息,将较新的数据更新到其他分区,从而在整个集群范围内恢复数据的一致性,确保事务的最终一致性和数据完整性。