常见的六种容错机制:Fail-Over、Fail-Fast、Fail-Back、Fail-Safe,Forking 和 Broadcast
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)之后,发生故障的服务/机器 能够自动恢复。
比如:在后台记录失败请求,定时重发;
又如:在多台服务器互联的网络中,如果要维修某台服务器,需要把服务(或网络资源)暂时重定向到备用系统。
维修结束后,再将服务(或网络资源)恢复为 由原来维修的主机提供 的过程,称为自动恢复。
【最佳实践】
通常用于消息通知操作;
不足:不可靠,重启会丢失;
可用于生产环境注册(Registry)。
4、Fail-Safe:失效安全
出现异常时,直接忽略。可以认为,即使发生了故障,也不会对系统/服务造成伤害,或尽量减少伤害。
比如:红绿灯 - Traffic light 中,对红绿灯的“冲突监测”的示例:
如果冲突监控器检测到错误或冲突的信号时,交通信号灯将进入闪烁模式。
该信号可能会向主要道路显示呈琥珀色闪烁,向人行道路呈红色闪烁,或在所有方向上呈红色闪烁,也可以在交通不畅的白天使用闪光操作 —— 而不是全部显示为绿灯。
【最佳实践】
通常用于写入审计日志等操作;
可用于生产环境的监控(Monitor)。
5、Forking:并行调用多个服务
并行调用多个服务,只要一个成功即返回成功的结果。
比如:Dubbo 的 Forking 集群模式,需要设置最大并行数。
【最佳实践】
通常用于实时性要求较高的读操作;
不足:会浪费更多服务资源。
6、Broadcast:广播调用
广播调用所有服务,逐个调用,任意一个服务出错,则此次调用失败。
比如:Dubbo 的 Broadcast 集群模式。
【最佳实践】
通常用于更新提供方的本地状态;
不足:速度慢,任意一个服务出错将导致整个调用失败。
参考资料
版权声明
感谢阅读,公众号 「瘦风的南墙」 ,手机端阅读更佳,还有其他福利和心得输出,欢迎扫码关注
本文系转载,并在原文的基础上做了一定的补充和修改。如有侵权,请原作者联系博主,定当立即删除。
常见的六种容错机制:Fail-Over、Fail-Fast、Fail-Back、Fail-Safe,Forking 和 Broadcast的更多相关文章
- Dubbo服务集群,常见容错机制:failover ,failsafe,failfase ,failback,forking
http://blog.csdn.net/hongweigg/article/details/52925920 http://m.blog.csdn.net/article/details?id=51 ...
- Dubbo学习源码总结系列四--集群容错机制
Dubbo提供了哪些集群容错机制?如何实现的? 提供了六种集群容错机制,包括Failover(失败自动切换,尝试其他服务器).Failfast(失败立即抛出异常).Failsafe(失 ...
- Storm学习笔记 - 消息容错机制
Storm学习笔记 - 消息容错机制 文章来自「随笔」 http://jsynk.cn/blog/articles/153.html 1. Storm消息容错机制概念 一个提供了可靠的处理机制的spo ...
- Storm消息容错机制(ack-fail机制)
storm消息容错机制(ack-fail) 1.介绍 在storm中,可靠的信息处理机制是从spout开始的. 一个提供了可靠的处理机制的spout需要记录他发射出去的tuple,当下游bolt处理t ...
- nginx upstream 容错机制
熟练掌握Nginx负载均衡的使用对运维人员来说是极其重要的!下面针对Nignx负载均衡upstream容错机制的使用做一梳理性说明: 一.nginx的upstream容错 1)nginx 判断节点失效 ...
- [源码解析] 并行分布式框架 Celery 之 容错机制
[源码解析] 并行分布式框架 Celery 之 容错机制 目录 [源码解析] 并行分布式框架 Celery 之 容错机制 0x00 摘要 0x01 概述 1.1 错误种类 1.2 失败维度 1.3 应 ...
- 总结Flink状态管理和容错机制
本文来自8月11日在北京举行的 Flink Meetup会议,分享来自于施晓罡,目前在阿里大数据团队部从事Blink方面的研发,现在主要负责Blink状态管理和容错相关技术的研发. 本文主要内容如 ...
- JavaScript 常见的六种继承方式
JavaScript 常见的六种继承方式 前言 面向对象编程很重要的一个方面,就是对象的继承.A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法.这对于代码的复用是非常有用的. 大部分 ...
- Flink状态管理和容错机制介绍
本文主要内容如下: 有状态的流数据处理: Flink中的状态接口: 状态管理和容错机制实现: 阿里相关工作介绍: 一.有状态的流数据处理# 1.1.什么是有状态的计算# 计算任务的结果不仅仅依赖于输入 ...
随机推荐
- linux菜鸡学习之路
Linux入门 Linux 介绍 1.Linux怎么读 2.Linux是一款操作系统,免费,开源,安全,高效,稳定,处理高并发非常强悍. Linux文件系统目录 基本介绍 linux的文件系统树状目录 ...
- 最常见的安全漏洞– Acunetix Web应用程序漏洞报告2021
每年,Acunetix都会为您提供最常见的Web安全漏洞和网络外围漏洞的分析.我们的年度Web应用程序漏洞报告(现已成为Invicti AppSec指标的一部分)是基于从Acunetix在线获得的真实 ...
- hugo + nginx 搭建博客记录
作为一个萌新Gopher,经常逛网站能看到那种极简的博客,引入眼帘的不是花里胡哨的图片和样式,而是黑白搭配,简简单单的文章标题,这种风格很吸引我.正好看到煎鱼佬也在用这种风格的博客,于是卸载了我的wo ...
- 判断字符串是否为ip地址----python
def isIp(ip_str): flag = True if '.' not in ip_str: return False if ip_str.count('.')!=3 : return Fa ...
- ESP32存储blog笔记
基于ESP-IDF4.1 1 #include <stdio.h> 2 #include "freertos/FreeRTOS.h" 3 #include " ...
- CF1539D PriceFixed[题解]
PriceFixed 题目大意 市场上又 \(n\) 种商品,每种商品的价格都是 \(2\) .对于第 \(i\) 种商品 \(a_i\) 件.对于商品 \(i\) 给出一个值 \(b_i\) ,如果 ...
- SQL2008 合并多个结构相同的表的所有数据到新的表
select * into tikua from (select * from tiku20210303 union all select * from tiku) a
- 【翻译】拟合与高斯分布 [Curve fitting and the Gaussian distribution]
参考与前言 英文原版 Original English Version:https://fabiandablander.com/r/Curve-Fitting-Gaussian.html 如何通俗易懂 ...
- MySQL主从复制的简单搭建
@ 目录 1.MySQL一主一从的简单搭建 1.1.主从复制简介 1.2.MySQL主从复制简介 1.3.主从复制的架构 1.4.前期准备 1.5.主要配置实现 1.5.1.测试环境 1.5.2.配置 ...
- 【LeetCode】496.下一个更大元素I
496.下一个更大元素I 知识点:栈:HashMap: 题目描述 给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集. 请你找出 nums1 中每个元 ...