常见的四种容错机制:Fail-Over、Fail-Fast、Fail-Back、Fail-Safe
1、fail-over:故障转移
fail-over 意思是“故障转移,失效切换”,是一种备份操作模式,主要思路是:
主要组件出现异常时,将其功能转移到具有同样功能的备份组件。
要点在于有主有备,且主发生故障时,可将备切换为主。比如 hdfs 的双 namenode,当 active namenode 出现故障时,可以启用 standby namenode 来继续提供服务。
2、fail-fast:快速失败
就是“快速失败”,尽可能早地发现系统中的错误,使系统能够按照事先设定好的错误流程执行,对应的方式是“fault-tolerant(错误容忍)”。
以 java 集合(collection)的快速失败为例,当多个线程同时操作同一个集合中的元素时,就可能发生 fail-fast 事件。
具体示例:当线程 a 通过迭代器遍历某集合的时候,其他线程刚好修改了该集合中的元素(比如添加、删除),这个时候,线程 a 在继续访问集合时,就会抛出 concurrentmodificationexception 异常,产生fail-fast 事件。
这里的并发修改异常,就是 发现错误时执行设定好的错误。
3、fail-back:失效自动恢复
fail-back,就是在故障转移(fail-over)之后,发生故障的服务/机器 能够自动恢复。
比如:在簇网络系统(两台或多台服务器互联的网络)中,如果要对某台服务器进行维修,需要把服务(或网络资源)暂时重定向到备用系统。
维修结束后,再将服务(或网络资源)恢复为 由原来维修的主机提供 的过程,称为自动恢复。
4、fail-safe:失效安全
失效安全,即使在故障的情况下,也不会对系统造成伤害或尽量减少伤害。
比如:红绿灯 - traffic light 中,对红绿灯的“冲突监测”的示例:
如果冲突监控器检测到错误或冲突的信号时,交通信号灯将进入闪烁模式。
该信号可能会向主要道路显示呈琥珀色闪烁,向人行道路呈红色闪烁,或在所有方向上呈红色闪烁,也可以在交通不畅的白天(例如深夜)使用闪光操作 —— 而不是全部显示为绿灯。
参考资料
版权声明
感谢阅读,公众号 「瘦风的南墙」 ,手机端阅读更佳,还有其他福利和心得输出,欢迎扫码关注
上一篇: c#金额转换成中文大写金额
下一篇: DDD实践反思