熔断方案

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 【8月更文挑战第20天】

假设准备用响应时间来作为指标,可以这么回答,关键词是持续超过阈值

为了保障微服务的可用性,在核心服务里接入了熔断。针对不同的服务,设计了不同的微服务熔断策略。
比如最简单的熔断就是根据响应时间进行,当响应时间超过阈值一段时间之后就会触发熔断。我一般会根据业务情况来选择这个阈值,例如产品要求响应时间是1秒,就会把阈值设定在1.2秒。如果响应时间超过1.2秒,并且持续三十秒,就会触发熔断。在触发熔断的情况下,新请求会被拒绝,而已有的请求会被继续处理,直到服务恢复正常。

  1. 阈值怎么确定?根据观测到的响应时间数据来决定
  2. 持续三十秒是如何计算出来的?基于个人经验,解释一下过长或过短的弊端
  3. 为什么多了0.2秒?留了余地,防止偶发性的响应时间变长的情况
  4. 怎么判断服务已经恢复正常了?可以回答等到一段固定的时间,然后尝试逐渐放开流量

微创新的方案,关键词是缓存崩溃

一个接口并发很高,对缓存依赖也很严重,所以熔断策略就是如果缓存不可用,比如Redis崩溃了,就会触发熔断。因为如果不熔断的话,请求会因为Redis崩溃全部落在MySQL上,基本上会压垮MySQL。
在触发熔断后,会额外开辟一个协程,持续不断地ping Redis

这里用 Redis 来作为例子,可以将 Redis 替换为 MemCache 之类的,甚至你还可以将缓存替换成你业务上任何一个关键的第三方依赖。

这里还留了一些可以引导的点

  • 缓存问题:在这里提到了Redis失效,这种情况类似于缓存雪崩,很自然地就可以把话题引导到如何处理缓存击穿、穿透、雪崩这些经典问题上
  • 高可用MySQL:使用熔断来保护MySQL,类似地,也可以考虑用限流来保护MySQL

最后我提到了退出熔断状态,如果面试官了解抖动问题,那么他就肯定会追问“你是一次性放开全部流量吗?”,那么你就可以阐述抖动的问题,然后总结一下。

我这种逐步放开流量的方案其实还是有缺陷的,还有一些更加高级的做法,但是需要负载均衡来配合。

目录
相关文章
|
存储 缓存 应用服务中间件
Docker 镜像解密:分层存储与镜像构建原理
Docker 镜像解密:分层存储与镜像构建原理
693 0
|
4月前
|
人工智能 运维 安全
F5推出AI网关,赋能企业化解大模型应用风险
F5推出AI网关,赋能企业化解大模型应用风险
150 5
|
Prometheus 算法 Cloud Native
熔断原理分析与源码解读
熔断原理分析与源码解读
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
Logic-RL: 小模型也能强推理,通过基于规则的强化学习提升大语言模型结构化推理能力
这篇论文探讨了基于规则的强化学习(RL)如何提升大型语言模型(LLM)的高级推理能力。通过在程序生成的逻辑谜题上训练并强制执行结构化思考,即使是较小的模型也能开发出可转移的问题解决策略。研究引入了多层次奖励系统,包括格式、答案、推理一致性和反思奖励,以引导模型形成严谨的推理过程。实验结果表明,这种方法不仅提高了模型在逻辑任务上的性能,还在数学问题解决、代码调试等领域展现出显著的泛化能力。此外,该方法在较小模型上实现了与大模型相当甚至更优的推理表现,为资源受限环境下的高效推理提供了新途径。
693 0
Logic-RL: 小模型也能强推理,通过基于规则的强化学习提升大语言模型结构化推理能力
|
存储 设计模式 算法
一文讲透自适应熔断的原理和实现
一文讲透自适应熔断的原理和实现
|
Kubernetes 负载均衡 网络协议
在k8S中,Headless Service是什么?
在k8S中,Headless Service是什么?
|
开发框架 前端开发 关系型数据库
使用egg.js开发后端API接口系统 什么是Egg.js
使用egg.js开发后端API接口系统 什么是Egg.js
|
监控 Dubbo 测试技术
如何做好一次服务接口压测?
如何做好一次服务接口压测?
245 0
|
监控 Java 应用服务中间件
硬核神作|2w字带你拿下Sentinal
硬核神作|2w字带你拿下Sentinal
Go --- go-elasticsearch介绍及简单使用
Go --- go-elasticsearch介绍及简单使用
Go --- go-elasticsearch介绍及简单使用