几种分布式下的错误处理方式

空无

Failover(故障转移/故障切换)

即当活动的服务或应用意外终止时,快速启用冗余或备用的服务器、系统、硬件或者网络接替它们工作。

比如一个负载均衡器下挂的多台服务,发生请求是如果一个后端服务挂了,负载均衡器可以自动切换到另一个

Failback(故障恢复)

故障恢复是指,当服务出现故障后,还可以恢复到故障之前的状态。

比如一个合格的数据库系统,在I/O操作执行一半后(比如写数据+写索引两个文件)发生异常宕机,重启后也不会发生数据错乱

或者远程调用时,如果本次调用失败,可以考虑稍后再重试

Fail-fast(early)(快速失败/提前失败)

大多情况下,程序宕机或者崩溃的影响并没有那么大,由于崩溃或错误数据造成的一系列问题才是最致命的,比如各种费用计算错误等。

Fail-fast就是让程序提前处理失败,如果检测到会出现错误,让程序立刻发生故障/异常,而不是让程序继续运行造成更严重的后果

校验前置就是一个很基本的Fail-fast处理策略,数据校验不通过时直接抛出错误,不继续执行。比如Java里的ConcurrentModificationException异常,就算是一个Fail-fast处理,当检测到数据并并行修改时,不处理数据直接抛出异常结束操作,这样就保证了数据的安全,虽然操作被终止了。

Fail-safe(安全失败)

安全失败是指当一个服务或软件出现异常时,也不会对使用者和服务自身造成更大的影响(或者将影响最小化)。

比如在远程调用中,当内部有异常时,最好是内部将异常消化了同时返回安全数据给调用方(比如空数据),同时记录错误信息,或友好的返回给调用者

安全失败有时也叫防呆设计,比如CPU安装时的卡槽,如果没有对准的话是装不进去的,防止因为方向弄错而损坏CPU
image.png

阅读 637

坚持原创,专注分享 JAVA、网络、IO、JVM、GC 等技术干货

2.8k 声望
4.2k 粉丝
0 条评论
你知道吗?

坚持原创,专注分享 JAVA、网络、IO、JVM、GC 等技术干货

2.8k 声望
4.2k 粉丝
文章目录
宣传栏