熔断方案

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生内存数据库 Tair,内存型 2GB
云数据库 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

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

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

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
监控 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
|
4月前
|
缓存 Java 应用服务中间件
常见的限流降级方案
【1月更文挑战第21天】
|
4月前
|
监控 Java 微服务
服务降级和服务熔断的区别
服务降级和服务熔断的区别
|
9月前
|
Cloud Native 算法 安全
简单理解微服务限流、降级、熔断
简单理解微服务限流、降级、熔断
130 0
|
设计模式 监控 算法
高可用三大利器 — 熔断、限流和降级
在武侠世界里,“利器”通常指的是武器中的上乘、出色之物;武器对于武者的重要性不言而喻,拥有一把优秀的武器可以让武者在战斗中更加得心应手,威力更强。在分布式系统追求高可用的背景下,熔断、限流和降级这三个重要的策略可以称得上三大利器。降级和熔断是不是一回事?限流 与 降级呢?
210 2
|
缓存 SpringCloudAlibaba 监控
系统之高可用(二):熔断降级
分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为级联故障效应,最终结果导致整个系统服务不可用
143 0
|
SQL JavaScript Dubbo
浅谈微服务中限流熔断降级的方法论
易波动或者对波动比较敏感;容易影响整体的;不能预测上游行为,或者不能预测下游行为,依赖的上下游有不可预测的行为体。要不要做熔断降级的核心点在于是否可控,有没有不可控因素。
207 0
hystrix服务降级处理方案
当一个服务端的业务响应的时间过长的时候或者业务处理逻辑处理异常,不应该等待,应该给出一种处理方法
hystrix服务降级处理方案
|
Java 开发者 Sentinel
SentineI 服务熔断降级的策略 | 学习笔记
快速学习 SentineI 服务熔断降级的策略
114 0
熔断和限流原理和使用(4)
熔断和限流原理和使用(4)
121 0
熔断和限流原理和使用(4)