常见的六种容错机制: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.什么是有状态的计算# 计算任务的结果不仅仅依赖于输入 ...
随机推荐
- mybatis 配置的log4j文件无效,不能正常显示日志信息
正在学习mybatis,配置好后log4j.properties文件后,日志信息不能正常显示,没有效果. 查看了一下mybatis的相关文档,在日志一栏找到问题愿意 原因是我们的mybatis选了其他 ...
- 容器化-Docker-1-速查手册-Docker常用命令
目录 备注 常用命令 Docker镜像管理(操作对象是镜像) Docker容器管理(操作对象是容器) 容器外挂目录(宿主目录映射到容器中) 这篇文章的目的就是把最常用的命令列出来,没时间看速查命令使用 ...
- web自动化之浏览器启动
一.环境准备 1.本地引入jar 从http://selenium-release.storage.googleapis.com/index.html?path=3.9/,下载selenium-ser ...
- 高校表白App-团队冲刺第九天
今天要做什么 在Fragment首页加上轮转播报,点击图片进入相应连接 做了什么 功能实现,通过连接第三方库来进行实现,比较简单.(url就可以) 遇到的问题 在调用以前的工具类时,有点小问题,发现以 ...
- js学习-es6实现枚举
最近大部分时间再写dart,突然用到js,发现js不能直接声明一个枚举.搜索发现还是有实现的方式,于是总结一下. 目录 枚举特点 Object.freeze() Symbol 实现 体现不可更改 体现 ...
- 学习总结 NCRE二级和三级
NCRE二级C语言 证书 考试感想 2016年考的认证,5年过去了,"光阴荏苒真容易".趁着心有余力有余的时候,把一些个人的体会分享给大家,希望后来人能平稳前行. Windows ...
- Centos7 firewall开放3306端口 笔记
1. 开启端口 // zone -- 作用域 // add-port=80/tcp -- 添加端口,格式为:端口/通讯协议 // permanent -- 永久生效,没有此参数重启后失效 firewa ...
- Mysql 基础用法
#创建表 CREATE TABLE table_name (column_name int) CREATE TABLE IF NOT EXISTS `runoob_tbl`( `runoob_id` ...
- PhotoShop CC2015(64位)下载链接和破解教程
photoshop如今有cc和cs两种版本,之前出了一个cs的破解教程和扣圆形图,有很多朋友说cc比cs好用的多,希望出个cc的下载链接和破解教程,故推出2015pscc版破解教程和下载链接. 百度云 ...
- 理清 UT、UTC、GMT和CST
平时各种时间标准简写绕得不明不白,查一下整理在这里. IAT: International Atomic Time, 原子时.又称国际原子时,是一种通过原子钟得到的时间标准,原子钟是世界上已知最准确的 ...