📚 分类
spring cloud
🕵🏽‍♀️ 问题描述
什么是服务雪崩,怎么解决这个问题?
👨‍🏫 问题讲解
❒ 什么是服务雪崩

1. 服务之间通过fegin进行通讯
2. A -> B -> C -> D,D服务出现问题后 A,B,C,D都不能使用了
3. 一个服务失败,导致整条链路的服务都失败的情形

❒ 服务降级(接口级别)

✔ 服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用确保服务不会崩溃

✔ 服务之间调用样例

@Feignclient(value ="leadnews-article",fallback = IArticleclientfallback.class)
public interface IArticleclient {
  @PostMapping("/api/v1/article/save")
  public ResponseResult saveArticle(@ReqdestBody ArticleDto dto);
}

✔ 请求失败降级样例

@Component
public class IArticleclientFallback implements IArticleclient {
  @0verridepublic ResponseResult saveArticle(ArticleDto dto){
    return ResponseResult.errorResult(AppHttpcodeEnum.SERVER ERROR,"获取数据失败");
  }
}

❒ 服务熔断(服务级别)

✔ Hystrix 熔断机制,用于监控微服务调用情况,默认是关闭的,
✔ 如果需要开启需要在引导类上添加注解:@EnableCircuitBreaker
✔ 如果检测到 10 秒内请求的失败率超过 50%,就触发熔断机制(关闭 -> 打开)。
✔ 之后每隔5秒重新尝试请求微服务,如果微服务不能响应,继续走熔断机制(半开 -> 打开)。
✔ 如果微服务可达,则关闭熔断机制,恢复正常请求(半开 -> 关闭)

🏳️‍🌈 问题总结
✔ 服务雪崩: 一个服务失败,导致整条链路的服务都失败的情形
✔ 服务降级: 服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃,一般在实际开发中与feign接口整合,编写降级逻辑
✔ 服务熔断: 默认关闭,需要手动打开,如果检测到 10秒内请求的失败率超过50%,就触发熔断机制。之后每隔5秒重新尝试请求微服务,如果微服务不能响应,继续走熔断机制。如果微服务可达,则关闭熔断机制,恢复正常请求
📖 问题信息
📈 浏览次数:7 | 📅 更新时间:2025-12-03 09:59:56
📦 创建信息
🏷️ ID:61 | 📅 创建时间:2024-10-20 21:44:04