背景
最近参与了部门的稳定性建设,时常会看到一些failxxxx的字眼,常见的场景如:在Java集合迭代过程中,如果集合有修改就会抛出一个ConcurrentModificationException异常,这就是一种典型的fail-fast机制。
经过查阅资料,原来这些专有名词都有一个统一的名字:容错机制。终于,借此机会对常见的容错机制进行一下总结,方便以后学习。
文章中若有本人理解或描述不当之处,欢迎老铁们指出~
fail-fast - 快速故障
在系统设计中,快速故障系统是一种可以立即报告任何可能表明故障的情况的系统。快速故障系统通常旨在停止正常操作,而不是继续尝试可能有问题的过程。此类设计通常会在操作中的多个点检查系统状态,因此可以及早发现故障。快速故障模块的职责是检测错误,然后让系统优先处理。
private SystemService systemService;
public String failFast() {
boolean result = systemService.executeFailFastTask();
if (result) {
return "success";
} else {
throw new RuntimeException("执行失败"); // fail-fast
}
}
- Example : List集合中迭代器的next()方法,只要检测到正在遍历的集合对象进行了修改,