【微服务】面试 2、服务雪崩

服务雪崩概念

  • 主要内容:在微服务项目中,微服务间存在远程调用。若某一服务(如服务 d)出现故障,调用它的服务(如服务 a)会失败。若调用方持续向故障服务发起请求,由于服务连接数有限且失败连接未释放,可能导致调用方连接数占满,无法对外提供服务,进而引发连锁反应,使整个微服务链路不可用,这就是服务雪崩。
  • 核心概念:一个服务的失败可能引发整个链路服务的失败。
  • 关键知识点:服务间的远程调用关系、服务连接数的限制以及故障传递导致的雪崩现象。

服务雪崩的解决方法

  • 主要内容:可使用熔断降级和限流来解决服务雪崩问题。其中,熔断降级可利用 spring cloud 中的 hystix 组件实现,限流则是限制访问,主要用于预防。重点讲解熔断降级。
  • 核心概念:通过特定组件和策略防止服务雪崩。
  • 关键知识点:hystix 组件提供熔断降级功能,限流的预防作用及与熔断降级的区别。

服务降级介绍

  • 主要内容:以服务 d 为例,其包含修改和保存两个接口,若保存接口出现问题(如抛异常),服务 a 调用该接口时可加入降级逻辑。降级逻辑可提示用户"网络有问题,请稍后再试",此时保存功能暂时不可用。
  • 核心概念:在接口出现问题时,通过自定义逻辑使部分服务功能暂时不可用,以保障服务稳定性。
  • 关键知识点:服务降级的触发条件(接口异常)、降级逻辑的设置方式(如提示信息)以及对服务功能的影响(部分功能不可用)。

服务降级的具体处理

  • 主要内容 :通常在使用接口发起远程调用时设置降级逻辑,如通过 feign client 调用 其它 服务时,在相关位置设置 fallback 指定降级逻辑,且降级逻辑类与接口方法存在对应关系。正常访问时走远程调用,接口失败则走降级逻辑,如直接提示"获取数据失败"。
  • 核心概念:在代码层面实现服务降级的具体操作和逻辑关联。
  • 关键知识点:代码中设置降级逻辑的位置和方式,降级逻辑类与接口方法的对应关系,以及正常与异常情况下的执行路径。

服务熔断介绍

  • 主要内容 :由 hystrix 组件提供,有关闭、打开、半开三个状态,默认关闭,可在引导类上加注解开启。当请求失败率在一定时间内(如十秒内失败率超过 50%)达到阈值,断路器从关闭状态切换到打开状态,所有请求被拒绝。一段时间后进入半开状态,尝试放行一次请求,根据请求结果决定断路器的后续状态。
  • 核心概念:基于请求失败率等条件对服务进行熔断控制,以防止故障服务对系统的持续影响。
  • 关键知识点:服务熔断的组件、状态及其转换条件,不同状态下对请求的处理方式,以及重试的时间间隔和机制。

服务降级与服务熔断的区别

  • 主要内容:服务降级针对的是某一个接口,是部分服务功能不可用,是服务自我保护或保护下游服务的方式;服务熔断则是针对整个服务不可用,当满足特定的失败率条件时触发。
  • 核心概念:明确两种应对服务雪崩机制在作用对象和触发条件上的差异。
  • 关键知识点:服务降级针对接口、部分功能不可用,服务熔断针对整个服务不可用,以及各自的触发条件和应用场景。

面试题回答要点

  • 主要内容:向面试官解释服务雪崩是一个服务失败导致整个链路服务失败的情形。解决方案包括服务降级和服务熔断,分别阐述其原理、特点及两者区别。如服务降级是服务自我保护或保护下游服务的方式,与接口整合编写降级逻辑;服务熔断默认关闭需手动打开,根据请求失败率触发和恢复。
  • 核心概念:全面、准确地回答服务雪崩相关面试问题,展示对知识的理解和应用能力。
  • 关键知识点:服务雪崩的定义、解决方法(降级和熔断)的详细内容及两者区别,回答问题的逻辑和要点。
相关推荐
RainbowSea7 分钟前
补充:问题:CORS ,前后端访问跨域问题
java·spring boot·spring
RainbowSea9 分钟前
15. MySQL 多版本并发控制
java·sql·mysql
倔强的石头10617 分钟前
飞算JavaAI:重构软件开发范式的智能引擎
java·数据库·重构
前端小巷子18 分钟前
跨域问题解决方案:JSONP
前端·javascript·面试
Q_9709563933 分钟前
java+vue+SpringBoo足球社区管理系统(程序+数据库+报告+部署教程+答辩指导)
java·开发语言·数据库
要开心吖ZSH38 分钟前
微服务架构的演进:迈向云原生
java·微服务·云原生
为了更好的明天而战1 小时前
Java 中的 ArrayList 和 LinkedList 区别详解(源码级理解)
java·开发语言
JosieBook1 小时前
【Java编程动手学】Java中的数组与集合
java·开发语言·python
N_NAN_N2 小时前
类图+案例+代码详解:软件设计模式----单例模式
java·单例模式·设计模式
weixin_399380692 小时前
k8s一键部署tongweb企业版7049m6(by why+lqw)
java·linux·运维·服务器·云原生·容器·kubernetes