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

ops/2025/1/15 12:26:32/

服务雪崩概念

在这里插入图片描述

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

服务雪崩的解决方法

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

服务降级介绍

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

服务降级的具体处理

在这里插入图片描述

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

服务熔断介绍

在这里插入图片描述

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

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

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

面试题回答要点

  • 主要内容:向面试官解释服务雪崩是一个服务失败导致整个链路服务失败的情形。解决方案包括服务降级和服务熔断,分别阐述其原理、特点及两者区别。如服务降级是服务自我保护或保护下游服务的方式,与接口整合编写降级逻辑;服务熔断默认关闭需手动打开,根据请求失败率触发和恢复。
  • 核心概念:全面、准确地回答服务雪崩相关面试问题,展示对知识的理解和应用能力。
  • 关键知识点:服务雪崩的定义、解决方法(降级和熔断)的详细内容及两者区别,回答问题的逻辑和要点。

在这里插入图片描述


http://www.ppmy.cn/ops/150280.html

相关文章

GCC安全编译选项

文章目录 GCC安全编译选项1.BIND_NOW2.NX3.PIC4.PIE5.SP6.NO Rpath/Runpath7.FS8.Ftrapv9.Strip10.安全编译Python GCC安全编译选项 1.BIND_NOW 定义:立即绑定,打开GOT表重定位只读选项 使用方式:LDFlAGS"-Wl,-z,relro,-z,now" ./configure 2.NX 堆栈不可执行:打…

Chatper 4: Implementing a GPT model from Scratch To Generate Text

文章目录 4 Implementing a GPT model from Scratch To Generate Text4.1 Coding an LLM architecture4.2 Normalizing activations with layer normalization4.3 Implementing a feed forward network with GELU activations4.4 Adding shortcut connections4.5 Connecting at…

快速、简单的2D-6D位姿估计:Gen6D算法复现 (pytorch 1.12.1 + cu113)

​ 摘要 记录一下复现Gen6D的过程,主要记录其中遇到的一些bug,主要参考了博主牙牙要健康、Fate-Sky-CSDN博客这两位博主的博客。 参考文章: 【6D位姿估计】【深度学习】windows10下Gen6D代码Pytorch实现 6D姿态估计网络【Gen6D复现】CUDA…

3D可视化产品定制,应用于哪些行业领域?

3D可视化定制服务已广泛渗透至众多行业领域,包括汽车、家居、时尚鞋服、珠宝配饰以及数码电器等: 汽车行业: 借助Web全景技术与3D模型,我们高保真地再现了汽车外观,为用户带来沉浸式的车型浏览体验。用户可在展示界面自…

C# 25Dpoint

C# 25Dpoint ,做一个备份 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace _25Dpoint {public partial cl…

20.2、主流数据库安全分析与防护

目录 Oracle数据库安全分析与防护Oracle安全最佳实践MS SQL数据库安全分析与防护MS SQL Server安全最佳实践MySQL数据库安全分析与防护MySQL安全最佳实践国产数据库的安全分析与防护 Oracle数据库安全分析与防护 数据库oracle是数据库领域的老大,它的安全机制很多&a…

【json】

JSON JSON是一种轻量级的,按照指定的格式去组织和封装数据的数据交互格式。 本质上是一个带有特定格式的字符串(py打印json时认定为str类型) 在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互,类似于计算机普通话 python与json关系及相互转换…

关于在 Kotlin DSL 中,ndk 的配置方式

在 Kotlin DSL 中,ndk 的配置方式有所不同,取决于 Android Gradle 插件版本。ndk { abiFilters(…) } 在 Kotlin DSL 中实际上是 externalNativeBuild 的一部分,需要通过正确的上下文调用。 错误代码: ndk {abiFilters("ar…