服务质量 熔断 降级
Sentinel
alibaba • Updated Sep 5, 2024
降级和熔断是很像的,它也要考虑判定服务健康,如何恢复以及怎么降级。你需要记住的是从系统整体上看,你可以考虑跨服务降级,例如大促的时候关闭退款服务。针对单一服务,也可以考虑提供有损服务。
端午节到了。饭馆突然出现了大量客人。
但是店里位置有限。都坐满了呀。而且短时间内不会有空位,赶紧关门暂停接待新客户(熔断)
陆续有客人离开了,但是外面等位的客人还是太多了,没办法把所有人都安排位置,让大家先排队吧,有位置就让安排排前面的客人坐下(限流)。
有些热门的菜做起来太慢了。后面的客人如果要点这些菜,就跟他们说这些菜卖完了,吃吃非热门的菜吧(降级)
熔断
在微服务架构里面是指当微服务本身出现问题的时候,它会拒绝新的请求,直到微服务恢复。
熔断、降级、限流是三个经常合并在一起讨论的可用性保障措施。
综合运用负载均衡和熔断的方案,重点在于客户端控制流量,并根据服务端节点的状况来操作可用节点列表
降级
通俗来讲就是提供有损服务
读写服务降级写服务,快慢路径降级慢路径。
跨服务降级,当资源不够的时候可以暂停某些服务,将腾出来的资源给其他更加重要、更加核心的服务使用。我这里提到的大促暂停退款服务就是跨服务降级的例子。这种策略的要点是必须知道一个服务比另外一个服务更有业务价值,或者更加重要。
本服务提供有损服务,例如各大 App 的首页都会有降级的策略。在没有触发降级的时候,App 首页是针对你个人用户画像的个性化推荐。而在触发了降级之后,则可能是使用榜单数据,或者使用一个运营提前配置好的静态页面。这种策略的要点是你得知道你的服务调用者能够接受什么程度的有损。
只查缓存:正常来说在我的业务里面,就是查询缓存,如果缓存有数据,那么就直接返回。如果缓存没有,那么就需要去数据库查询。如果此时系统的并发非常高,那么我就会采取降级策略,将请求标记为降级请求。降级请求只会查询缓存,而不会查询数据库。如果缓存没有,那就直接返回错误。这样能够有效防止因为少部分请求缓存未命中而占据大量系统资源,导致系统吞吐量下降和响应时间显著升高。
快慢路径。
这种思路其实可以在很多微服务里面应用。如果一个服务可以分成快路径和慢路径两种逻辑,那么在降级之前就可以先走快路径,再走慢路径。而触发了降级之后,就只允许走快路径。在前面的例子里面,从缓存里加载数据就是快路径,从数据库里面加载数据就是慢路径。
慢路径还可以是发起服务调用或者复杂计算。比如说一个服务快路径是直接查询缓存,而慢路径可能是发起很多微服务调用,拿到所有响应之后一起计算,算出来一个结果并缓存起来。那么在降级的时候,可以有效提高吞吐量。不过这种吞吐量是有损的,毕竟部分请求如果没有在缓存中找到数据,那么就会直接返回失败响应。
Loading...