面试题答案
一键面试1. 两阶段提交简介
HBase 的两阶段提交(2PC)分为准备阶段(Prepare)和提交阶段(Commit)。在准备阶段,协调者向所有参与者发送准备消息,参与者执行事务操作但不提交,记录日志并反馈准备结果。在提交阶段,若所有参与者准备成功,协调者发送提交消息,参与者正式提交事务;若有参与者准备失败,协调者发送回滚消息,参与者回滚事务。
2. Snapshot场景下故障类型及容错机制
- 协调者故障:
- 原理:若在准备阶段协调者故障,参与者会等待超时,之后自动回滚事务。若在提交阶段故障,由于HBase采用了持久化的预写日志(WAL),新选举的协调者可以从WAL中恢复事务状态,重新向参与者发送提交或回滚指令。
- 容错机制:通过预写日志记录事务状态,选举新的协调者继续完成事务,确保事务一致性。
- 参与者故障:
- 原理:在准备阶段参与者故障,协调者会收到失败反馈,向其他参与者发送回滚消息。若在提交阶段参与者故障,协调者会不断重试向故障参与者发送提交消息,待其恢复后完成提交。若参与者故障导致数据丢失,可通过HBase的复制机制或数据恢复工具从其他副本恢复数据。
- 容错机制:通过重试机制、故障检测以及数据恢复手段,保证故障参与者恢复后能正确完成事务,维持数据一致性。
- 网络故障:
- 原理:网络分区导致协调者与部分参与者失联。若在准备阶段,协调者收不到部分参与者的准备反馈,会超时等待,之后判定准备失败,向所有能联系到的参与者发送回滚消息。若在提交阶段,协调者会不断重试向失联参与者发送提交消息,待网络恢复后完成提交。
- 容错机制:采用超时机制、重试机制处理网络故障,确保网络恢复后事务能继续正确执行。