在分布式系统中,硬件故障、网络波动、软件异常等问题难以避免。容错机制与故障恢复的核心目标是:通过主动检测故障、自动隔离风险、快速转移负载、重建数据一致性,最大限度减少故障对业务的影响,保障系统“持续可用”与“数据不丢失”。以下从核心机制、实现方式、典型案例等维度展开说明。
一、故障检测:及时发现异常节点
故障检测是容错的第一步,需通过多维度手段实时感知系统组件状态,确保故障被快速识别。
1. 健康检查与心跳检测
- 健康检查:通过定期探测节点的服务可用性(如HTTP接口返回状态、端口连通性),或监控核心指标(CPU、内存使用率、响应延迟),判定节点是否“健康”。例如,负载均衡器会定期检查后端节点,自动剔除无响应节点。
- 心跳检测:节点间通过“心跳包”维持通信(如每秒发送一次),若超过阈值(如30秒无响应)则判定为故障。
- 典型案例:Kafka的Broker会向ZooKeeper发送心跳;分布式协调工具(ZooKeeper、etcd)通过心跳监控集群节点状态。
2. 分布式协调工具的状态监控
分布式系统通过协调工具(ZooKeeper、etcd、Consul)统一管理节点状态,实现“全局可见性”:
- 节点需定期向协调工具上报状态(如Raft协议中的“ AppendEntries ”消