2024年4月18号技术面试总结

1.什么是微服务雪崩?微服务雪崩的解决方案?
微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。服务A依赖于服务B,服务A依赖于服务D。现在假设,服务D出现了故障!
它访问这个服务D就必然要等待服务D的结果,那因为服务D出现了故障,那必然不能返回结果,结果就是它会阻塞在这里。
那这就导致了服务A内部的这个业务是不是也会阻塞在这里?阻塞就会导致它不会释放服务器的连接。假如再有其他服务它们依赖于服务A,那么这些依赖于服务A的这些业务是不是也会拖垮?
到最后出现故障的服务越来越多,那么整个微服务群都不可用了,这不就是雪崩了。

微服务雪崩的解决方案:
1.1.超时处理
设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待。当服务A它的业务,依赖于服务D时,它最多等一秒。如果服务D故障以后,这个等待超过了一秒,
它会立即结束这个请求,不再返回给用户一个提示信息。现在假设新的请求速度是每秒钟两个,释放的速度没有进入的速度快,终有一天服务A的资源也有可能会被耗尽?
所以你设置超时时间也只是起到了一个缓解作用,并没有从根本上解决这个问题。

1.2.舱壁模式
限定每个业务使用的线程数,避免耗尽整个Tomcat的资源,因此也叫线程隔离。
服务A可以看成整艘船,然而我们该怎么避免整个Tomcat挂掉呢?
我们就把Tomcat里面的资源,也就是线程,划分成一个一个的独立的线程池。比方说给服务A中的业务1分配10个线程池,业务2分配10个。
那么现在业务1进来之后,它依赖于服务D。那它最多使用10个线程,访问业务2,它依赖于服务C。
那现在服务C出现故障了,那这个业务就会阻塞,占用我们的线程,但是,它最多占用10个。
那这个时候它能够使用的Tomcat 资源是不是有限呢?是不是就把这个故障隔离到了10个线程内了?
对此这个模式也叫线程隔离模式,它其实啊就避免了整个Tomcat资源耗尽的这种情况。
当然这个模式它确实解决了超时处理方案所遗留的问题,只不过资源可能会有一些浪费。
比如说,服务C宕机挂了,接下来你还是会尝试区请求这个服务C,明知道它已经挂掉了,你还要尝试访问,还要暂用我10个线程,是不是一种浪费?

1.2.3 熔断降级
由断路器统计业务执行的异常比例,如果超出阈值会熔断该业务,拦截访问该业务的一切请求。
在这个业务里面,出现故障的请求和正常的请求之间的一个比例是什么样子的?如果超出了阈值,则会熔断这个业务,什么是熔断,就是拦截访问该业务的一切请求。

1.2.4 流量控制
限制业务访问的QPS,避免服务因流量的突增而故障。
比如说,这里有一个受保护的服务,它能承受的最大QPS是2,也就是每秒钟最多处理两个请求,但是现在有无数的请求涌过来,那你说他能承受得了吗?那肯定是不行的呀,这不被打成筛子了。
而一旦这个服务出现了故障,那依赖于这个服务的其他服务是不是也都跟着会出现故障,那岂不是也会出现雪崩状况,所以,我们一定要尽可能的避免服务因为流量过高而引起故障。
那我们该怎么办呢?这就用到了我们的Sentinel了。
假如真的有无数个请求融入过来,而Sentine

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

String str=“hello“与String str = new String(“hello“)的区别

常量池(constant pool)指的是在编译期被确定,并被保存在以编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。 实际上 String str new String("hellow");创建了两个对象&#xf…

Java语言中字符串处理最常见的操作以及注意事项

0. 前言 由于最近线上连续出现跟字符串处理相关的故障,实属不应该。也从这些故障中看到大家对常见的字符串处理API有一些淡忘,希望通过收集整体并总结常见的处理方法,大家温故而知新。 1. 创建和初始化: a. 使用双引号直接创建…

方程豹春季品牌发布会:全家族矩阵献礼比亚迪

春意盎然的四月,深圳也迎来了中国新能源汽车领域的一场盛事。 4月16日,作为比亚迪旗下全球首个专业个性化汽车品牌,方程豹在深圳隆重举办春季发布会。 在这场以“方华”为主题的发布会上,方程豹汽车全家族矩阵首次集体亮相&#x…

【数据结构】单链表经典算法题的巧妙解题思路

目录 题目 1.移除链表元素 2.反转链表 3.链表的中间节点 4.合并两个有序链表 5.环形链表的约瑟夫问题 解析 题目1:创建新链表 题目2:巧用三个指针 题目3:快慢指针 题目4:哨兵位节点 题目5:环形链表 介绍完了…

美化博客文章(持续更新)

🎁个人主页:我们的五年 🔍系列专栏:游戏实现:贪吃蛇​​​​​​ 🌷追光的人,终会万丈光芒 前言: 该文提供我的一些文章设计的一些方法 目录 1.应用超链接 1.应用超链接

IIL IIH

IIH test_no;DATALOG_MSG;TEST_NO(test_no);RELAY_ON PDCL资源FORCE_V_MLDPS给VCC上电5.5vPIN_MODE位leakage_PINS管脚组接地LEVELS(Vcc5d5_lvl,2mS); PIN_INC(leakage_PINS, LOOP_BY_PIN) { RELAY_OFF PDCL资源 RELAY_ON PPMU资源 FORCE_V_PPMU上电5.5v,电流量…

mysql in查询优化

都说in查询比较慢,要改成子查询模式,ChatGPT大模型告诉了我,SQL中替换In查询的10种方法,太赞了,按照这个说的集中方法,验证一下。因为实际项目中确实存在in很多的情况。 查询执行的先后顺序对优化有必要&am…

【EI会议征稿】2024年先进机械电子、电气工程与自动化国际学术会议(ICAMEEA 2024)

2024 International Conference on Advanced Mechatronic, Electrical Engineering and Automation ●会议简介 2024年先进机械电子、电气工程与自动化国际学术会议(ICAMEEA 2024)将汇聚全球机械电子、电气工程与自动化领域的专家学者,共同…

【软考】敏捷方法

目录 一、概念二、敏捷方法2.1 极限编程(XP)2.2 水晶法(Crystal)2.2.1 说明2.2.1 特征 2.3 并列争球法(Scrum)2.4 自适应软件开发(ASD)2.5 敏捷统一过程(AUP)2.5.1 说明2.5.2 执行的活动 一、概念 1.Agile Development。 2.敏捷开发的总体目标是通过“尽可能早地、持续地对有价…

计算机网络:CSMA/CA协议

计算机网络:CSMA/CA协议 CSMA/CA概述帧间间隔工作原理退避算法虚拟载波监听 CSMA/CA概述 讲解CSMA/CA之前,我们回顾一下CSMA/CD的三个特性: 多址接入MA:多个主机连接在一条总线上,竞争使用总线 载波监听CS&#xff1a…

web网站搭建实验

综合练习:请给openlab搭建web网站 网站需求: 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息,教学资料 和缴费网站,基于,www.openlab.com/data网站…

麦克斯韦方程简单理解波粒二象性粒子退相干(Quantum Decoherence):微观的动态,宏观的静态量子

目录 麦克斯韦方程简单理解 波粒二象性 粒子退相干(Quantum Decoherence):微观的动态,宏观的静

X-314智能合约:金融创新的强大引擎

💥火爆到烫手的X-314智能合约🔥 X-314智能合约是基于以太坊区块链开发的,具有高度可定制性和灵活性。 ave开单独板块;详细资料已经准备好;对web3感兴趣的大佬货;多交流多指导🤝 ​X-314智能合…

JUC(java.util.concurrent) 的常见类

Callable 接口 Callable 的用法 Callable 是一个 interface(类似之前的 Runnable,用来描述一个任务,但是没有返回值)也是描述一个任务的,有返回值。方便程序猿借助多线程的方式计算结果. 例如:创建线程…

Zynq7000系列中PL时钟使用

可编程逻辑(PL)具有自己的时钟管理生成和分配功能,并从处理器系统(PS)中的时钟发生器接收四个时钟信号(如图25-10所示)。 在嵌入式系统中,PL时钟的管理和分配对于确保逻辑电路的正确…

QT跨平台读写Excel

QT跨平台读写Excel 背景Excel工具CMakeLists.txt工程目录 背景 开发框架QT,makefile构建工具CMake,编译器MinGW Excel工具 考虑跨平台则不能使用针对微软COM组件的QAxObject来读写Excel,因此使用开源QtXlsx。 这里是将QXlsx当做源码嵌入使…

使用FastDDS编译IDL文件

1.安装FastDDS环境 Ubuntu22.04 1.1安装依赖的软件 sudo apt-get update //基础工具安装 sudo apt install cmake g python3-pip wget git //Asio 是一个用于网络和低级 I/O 编程的跨平台C库,它提供了一致的 异步模型。 TinyXML2是一个简单,小巧&…

Redis进阶——GEO地理坐标附近商户案例

目录 GEO数据结构的基本用法GEO概述GEO命令的使用GEO数据结构练习 导入店铺数据到GEO业务场景实现代码如下 实现附近商户功能 GEO数据结构的基本用法 GEO概述 GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储…

java知识点---输入输出

Java 中的输入输出(I/O)是程序与外部世界(如用户、文件、网络、设备等)进行数据交换的基础功能。Java 提供了丰富的 I/O API 来支持各种类型的输入输出操作。以下是对 Java 中输入输出的主要概念、API 及使用场景的概述&#xff1…

过氧化氢滴定方法可用的PFA器皿有哪些?

滴定液:KMnO4标准溶液 试液:H2O2商品液(3%),H2SO4 (3.0mol/L ) 指示剂:酚酞指示剂 仪器:分析天平,PFA酸式滴定管50mL,PFA 移液管10mL/25mL、PFA 容量瓶250mL、PFA锥形瓶250mL 1、KMnO4标准溶液浓度的标定(见实验:高锰酸钾标准溶液的配制与…