快速失败与失败安全简述

简介: 快速失败与失败安全简述

先摆概念:系统运行中,如果有错误发生,那么系统立即结束,这种设计就是快速失败(fail-fast)。系统运行中,如果有错误发生,系统不会停止运行,它忽略错误(但是会有地方记录下来),继续运行,这种设计就是失败安全(fail-safe)。


以dubbo为例,在dubbo中,有一个AbstractClusterInvoker,其中有两个实现类FailfastClusterInvoker和FailsafeClusterInvoker


在dubbo的配置中,有一个cluster的属性,里面可以填“failfast”和“failsafe”,分别会在异常发生的时候执行FailfastClusterInvoker和FailsafeClusterInvoker。


看下这两个实现类之间的源码区别:


我们可以看到,在failfast的实现类中,如果发生了异常,会立即把它抛出去。

而在failsafe的实现类中,还是会返回一个空结果给调用方,然后打印错误日志,使得在异常发生的时候,程序不会终止,会继续执行下去。

对于快速失败和失败安全其实更多的是用在了集合中。

目录
相关文章
|
6月前
|
移动开发 API Android开发
mPaaS常见问题之初始化异常如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
111 0
|
4月前
|
监控 网络协议 数据安全/隐私保护
​邮件发送失败DMARC报错问题排查解决有什么理想方法
在邮件营销中,DMARC(域消息验证)报错常见。DMARC基于SPF和DKIM,指定如何处理未认证邮件。排查DMARC问题需检查SPF记录,验证DKIM签名,配置DMARC策略,使用AOKSend发送测试邮件。理想的解决方法包括:定期更新DNS记录,使用专业邮件服务如AOKSend简化配置,监控DMARC报告,逐步加强DMARC策略,并对员工进行培训。这将提高邮件发送成功率和安全性。
|
6月前
|
存储 Android开发 iOS开发
审核多次失败总结以及设计上避免被拒绝
审核多次失败总结以及设计上避免被拒绝
61 0
|
6月前
|
前端开发 程序员
项目中异常是如何处理的
项目中设定了全局异常处理器,统一处理预期和运行时异常。预期异常由程序员手动抛出,用于异常情况的接口返回;运行时异常为不可控错误,提供统一返回格式便于前端提示和后端排查。全局异常处理器借助@RestControllerAdvice和@ExceptionHandler注解,前者标识处理器,后者按异常类型定制前端响应,如预期异常直接返回,运行时异常则调整响应内容。
78 0
|
6月前
|
测试技术 Serverless iOS开发
PTS接口问题之执行请求失败如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
|
6月前
|
算法 C++
【算法】网络最大流问题,三次尝试以失败告终
开始 已多次看到“网络最大流问题”的字眼,一直不知道是什么,后来终于有一次打算仔细了解一下,期间我发现了一篇不错的博客:全面理解网络流中的最大流问题。在这篇博客的帮助下,我成功弄清楚了什么是网络流中的最大流问题,同时也明白了解决这个问题的基本思路。
85 0
|
开发框架 Oracle 关系型数据库
关于vs2008使用oracleclient链接oracle数据库报报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用
用vs2008链接oracle数据库出现问题,报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用,从网上找了好久方法,有两种oracle客户端文件权限,和运行vs2008以管理员身份,这些都试过了没有用,查了好久还是没有解决问题,只好换一种方式链接oracle数据了。
390 0
|
存储 消息中间件 缓存
消息列队有没有可能失败?在哪些环节可能失败,如何处理?
相信大家都使用过消息MQ,他可以很好地进行系统解耦,减低变成的复杂度,又可以进行削峰,增加系统在高并发的稳定性。那么使用MQ有哪些注意事项呢?是不是MQ就是万无一失呢?一条MQ消息从产生到消费,有没有可能失败?在哪些环节可能失败,如何处理? 一般来说,从生产者到MQ中间件是通过网络调用的,是网络调用就有可能存在失败。下面这些原因,都有可能造成MQ生产失败,例如网络波动,尽管生产者到MQ服务器之间是内网调用,并不意味着网络调用的成功率就是百分之百,内网调用也会遇到网络波动,造成调用超时或者失败。又如调用的MQ机器瞬间Crash掉,这也是有可能造成调用失败的。
消息列队有没有可能失败?在哪些环节可能失败,如何处理?
|
敏捷开发 运维 负载均衡
为什么IT项目仍然失败
为什么IT项目仍然失败
175 0
为什么IT项目仍然失败