概述
failfast(快速故障)
描述:
- 如果出现故障,则立即报错。
- 通常用于非幂等性操作,如:下单操作,如果写入故障,则立即报错,不必重试。
示例:
/**
* fail-fast: 快速故障
*/
public Object failFast() {
//保存订单
boolean result = MajorExternalService.saveOrder();
if (result) {
return "success";
} else {
//fail-fast
throw new IllegalStateException("下单失败!");
}
}
failsafe(故障安全)
描述:
- 如果出现故障,则可以忽略,因为这种故障不会造成损失或损失在可接受范围内。
- 通常用于辅助性操作,如:写入监控日志,如果写入故障,则忽略。
示例:
/**
* fail-safe: 故障安全
*/
public Object failSafe() {
//写入日志
boolean result = MajorExternalService.saveLog();
if (result) {
return "success";
} else {
//fail-safe
return "failed";
}
}
failover(故障切换)
描述:
- 如果出现故障,则重试备份操作模式。
- 通常用于幂等性操作,如:MySql的双Master模式,如果主Master故障,则切换至从Master。
- 重试通常会带来更多延时。
示例:
/**
* 默认情况下使用主要外部服务MajorExternalService
*/
private static boolean isMajorOK = true;
/**
* fail-over: 故障切换
*/
public Object failOver() {
//读取商品信息
Object goodsInfo;
//默认情况下使用主要外部服务
if (isMajorOK) {
try {
goodsInfo = MajorExternalService.getGoodsInfo();
} catch (Exception e) {
//fail-over: 调用主要外部服务发生故障,则切换为备用外部服务
isMajorOK = false;
goodsInfo = MinorExternalService.getGoodsInfo();
}
} else {
//
goodsInfo = MinorExternalService.getGoodsInfo();
}
return goodsInfo;
}
failback(故障恢复)
描述:
- 故障切换之后,如果主要操作模式恢复,则自动从备份操作模式恢复主要操作模式。
- 如:MySql的双Master模式,如果主Master故障,则failover至从Master;当主Master恢复之后,则自动切换至主Master。
示例:
/**
* fail-back: 故障恢复
*/
public void failBack() {
//一直在监测主要外部服务的状态
while (true) {
//通过某些方法得知主要外部服务已经恢复了
if (confirmMajorIsOk()) {
//fail-back
isMajorOK = true;
break;
}
}
}
最后
以上就是活泼航空为你收集整理的常见容错机制:failfast、failsafe、failover、failback的全部内容,希望文章能够帮你解决常见容错机制:failfast、failsafe、failover、failback所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复