Apache Pulsar中Autorecovery的作用是什么?不运行有何风险?
Apache Pulsar Autorecovery 进程问题解答
一、Autorecovery 进程的具体功能
Autorecovery是Apache Pulsar底层依赖的BookKeeper集群自带的自动故障恢复组件,核心功能如下:
- 实时监控BookKeeper集群中所有Bookie节点的存活状态、数据完整性,自动识别离线、不可访问、数据损坏的异常Bookie节点
- 自动检测副本数低于配置阈值的
Under Replicated Ledger,触发副本修复流程,无需人工介入 - 将故障Bookie上存储的Ledger片段副本,从其余健康Bookie读取后写入新的健康Bookie,始终保证每个Ledger的副本数符合
EnsembleSize、WriteQuorumSize、AckQuorumSize的配置要求 - 在Bookie节点宕机、磁盘损坏等故障场景下,自动完成数据冗余恢复,保障消息数据的持久性和集群服务可用性
二、Autorecovery 进程未正常运行的潜在风险
如果Autorecovery进程异常退出或者未部署运行,会存在以下核心风险:
- 故障Bookie上的Ledger副本无法自动补全,集群会持续累积大量
Under Replicated Ledger,一旦后续出现其他Bookie节点故障,很容易出现单个Ledger的可用副本数低于AckQuorumSize阈值的情况,直接导致该Ledger上的消息无法读取,出现数据不可用问题 - 当
Under Replicated Ledger积累到一定量级后,人工修复需要全量扫描所有Ledger、手动调度副本重写,不仅耗时极长,修复过程还会占用大量集群带宽、磁盘IO和CPU资源,严重影响正常业务的生产消费性能 - 若集群出现多台Bookie先后故障的场景,没有自动副本补全机制的前提下,大概率会出现部分Ledger的所有有效副本都分布在故障节点上,导致这部分消息数据永久丢失,无法恢复
- 部分Pulsar的元数据操作、主题分区存储分配会校验BookKeeper的副本健康状态,副本不足时会出现新主题创建失败、分区无法扩容、生产消息写入超时等异常,影响集群的正常功能使用
内容的提问来源于stack exchange,提问作者kellyfj
相关产品推荐
相关产品推荐

