常见容错机制以及实现原理:failover、failfast、failback、failsafe

0.简介

在现代信息系统中,随着业务的不断扩展和对服务要求的提高,系统可用性变得越来越重要,为了系统能够在各种故障场景下继续运行,就需要提供对应的容错机制,本文将介绍常见的容错机制failover、failfast、failback、failsafe的概念和实现思路。

1.failover

1.1 概念

failover(失效转移),是一种备份错做模式,当主要组件(如服务器、网络设备或应用服务)出现异常时,failover机制可以自动将功能转移到备份组件,从而保证服务连续性和数据完整性,其关键在于有主有备,且主故障时可以启用备并接管任务(回滚或继续)。
在这里插入图片描述

1.2 实现思路

从上述结构看,首先需要一个一致性的组件,这个组件可以是自己开发的一致性服务,也可以是一个中间件,该组件的主要作用是做资源的监控并进行切换,各个数据库都有不同的实现,去掉其特性我们来看,这个组件到底本质需要去实现那些东西。
1)需要去监控各个节点的状态,并有选择主节点的能力,能够正确的选择节点。
2)需要能记录主节点的执行状态和资源(集群资源)使用状态,这样选择的新的主节点在接管时才能正确进行后续的步骤(回滚或继续提交或重新执行)。
3)能够并行记录信息和反馈的能力,防止串行处理失败信息导致一个失败全局卡住。

2.failfast

2.1 概念

failfast(快速失败)是一种软件设计原则和错误处理的机制,它强调系统出现问题时应当及时暴漏问题,而不是在之后的某些时间暴露。其具有以下特性:
1)及时性:一旦检测到错误或异常条件,立即终止程序的执行或引发异常。
2)预防性:通过快速失败,防止错误状态呗传播,最小化危害。
3)可调式性:提供更容易的调试,因为问题暴露的点就是初始点,更容易排查。
在这里插入图片描述

2.2 实现思路

其并不是一种具体的实现,而是一种强调失败即结束,不再尝试而是直接暴露错误的思想,主要常见于编程中的各个部分。比如在Java集合框架中,Fail-fast机制被广泛应用于多线程环境下的集合操作。当多个线程对同一个集合的内容进行操作时,如果某个线程正在通过迭代器遍历该集合,而另一个线程同时修改了集合的内容,那么遍历线程将会抛出ConcurrentModificationException异常,这就是Fail-fast行为的一种体现。

3.failback

3.1 概念

failback(故障恢复)是指在发生系统故障或组件失效后,当原始系统或组件恢复正常时,系统自动将之前因故障而转移到备用系统或组件的功能和服务重新恢复回原始系统或组件的过程。其旨在恢复故障前的状态,确保服务的连续性和一致性,这依赖于原始系统和组件的恢复能力和备用系统和组件的释放能力。
在这里插入图片描述

3.2 实现思路

可以看到failback要求一致性组件除了上述failover的能力外,还需要对原主节点记录,这样再次上线后才能重新定位到其原本是主节点,另外还需要主节点组件恢复到最新状态的能力和备份节点释放和切换的能力,也就是下面三个节点都要支持增量同步和主动切换。

4.failsafe

4.1 概念

failsafe(故障安全)是设备在未接收到正确信号时无法运行,从而避免潜在的安全风险。这种机制在硬件系统中通常表现为设备在未接收到正确指令时保持安全状态,而在软件领域中则表现为一种失败处理模式,确保在异常情况下程序不会崩溃或产生更严重的后果。
在这里插入图片描述

4.2 实现思路

failsafe也是一种设计的思想,强调的是信号不正确则不处理,保持系统原本状态,其可以去记录这些错误,给出一些排查依据。例如,在Java等编程语言中,Failsafe迭代器确保在遍历集合时不会因为集合的修改而抛出异常。此外,Failsafe机制还应用于分布式系统、云基础设施管理、消息队列处理等领域,以防止因系统或组件故障导致的服务中断。

常见容错机制以及实现原理:failover、failfast、failback、failsafe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员学习随笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值