我们之前讲过故障隔离,它的目的是对故障组件进行隔离,以避免影响系统中的其他组件,尽可能保证分布式系统的可用性。
但是之后故障隔离还不够,我们需要考虑进行故障恢复。
什么是分布式故障?
分布式系统中的故障,可以分为两类:
- 物理故障,例如硬盘损坏、断电断网等。
- 软件故障,例如系统中存在的bug导致系统崩溃、负载过高等。
我们可以对故障进行分类讨论,包括:
- 节点故障,可以分为硬件故障和软件故障两种,主要表现是机器无法为用户提供服务。
- 网络故障,节点间无法通信,从而影响分布式应用正常提供服务。
什么是故障检测和恢复?
故障检测,是指通过一定的方式识别或者发现故障。
在分布式系统中,检测硬件故障通常会比较复杂,因此是通过查看软件层的表现结果进行故障检测。
故障检测,通过一定方式来识别或者发现故障。
在分布式系统中,检测硬件故障通常比较麻烦因此会通过软件层的表现结果进行故障检测。
故障恢复,是指修复分布式系统中出现的故障,使系统恢复正常。
在分布式系统中,常见的故障检测方法就是心跳机制,我们可以把它分为两类:
- 固定心跳检测策略
- 根据历史心跳信息预测故障检测策略
故障恢复策略
对于单点故障问题,往往采取主备策略,即当主节点故障后,从备节点中选出一个作为新的主节点。以继续提供服务。
对于网络故障问题的解决方案,简单来说就是C、A、P选择的问题。
当分布式系统中出现网络故障时,对于高可用性要求严格的系统,会要求必须及时响应用户的场景,就需要保AP放弃C的策略,对于数据一致性有严格要求的系统,就需要保CP放弃A的策略。
网络恢复问题也可以看做是数据恢复问题,即网络故障恢复之后节点之间数据进行同步的问题。
网友评论