Failover(故障转移/故障切换)
即当活动的服务或应用意外终止时,快速启用冗余或备用的服务器、系统、硬件或者网络接替它们工作。
比如一个负载均衡器下挂的多台服务,发生请求是如果一个后端服务挂了,负载均衡器可以自动切换到另一个
Failback(故障恢复)
故障恢复是指,当服务出现故障后,还可以恢复到故障之前的状态。
比如一个合格的数据库系统,在I/O操作执行一半后(比如写数据+写索引两个文件)发生异常宕机,重启后也不会发生数据错乱
或者远程调用时,如果本次调用失败,可以考虑稍后再重试
Fail-fast(early)(快速失败/提前失败)
大多情况下,程序宕机或者崩溃的影响并没有那么大,由于崩溃或错误数据造成的一系列问题才是最致命的,比如各种费用计算错误等。
Fail-fast就是让程序提前处理失败,如果检测到会出现错误,让程序立刻发生故障/异常,而不是让程序继续运行造成更严重的后果
校验前置就是一个很基本的Fail-fast处理策略,数据校验不通过时直接抛出错误,不继续执行。比如Java里的ConcurrentModificationException异常,就算是一个Fail-fast处理,当检测到数据并并行修改时,不处理数据直接抛出异常结束操作,这样就保证了数据的安全,虽然操作被终止了。
Fail-safe(安全失败)
安全失败是指当一个服务或软件出现异常时,也不会对使用者和服务自身造成更大的影响(或者将影响最小化)。
比如在远程调用中,当内部有异常时,最好是内部将异常消化了同时返回安全数据给调用方(比如空数据),同时记录错误信息,或友好的返回给调用者
安全失败有时也叫防呆设计,比如CPU安装时的卡槽,如果没有对准的话是装不进去的,防止因为方向弄错而损坏CPU
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。