服务降级、熔断、限流的区别

降级

系统将某些不重要的业务或接口的功能降低,可以只提供部分功能,也可以完全停到所有所有不重要的功能。降级的思想是丢车保帅。

熔断

降级是应对系统自身的故障,而熔断的目的是应对外部系统的故障。比如A服务的X功能依赖B服务的某个接口,当B服务接口响应很慢时,A服务X功能的响应也会被拖慢,进一步导致了A服务的线程都卡在了X功能上,A服务的其它功能也会卡主或拖慢。此时就需要熔断机制,即A服务不再请求B这个接口,A服务内部发现B接口就直接返回错误,从而避免整个A服务被拖慢。

  • 实现思路:需要系统有一个统一的API调用层,由API来进行采样或者统计。

限流

限流:只允许系统能够承受的访问量进来,超出的会被丢弃。降级从系统功能优先级角度考虑如何应对故障,而限流则从用户访问压力的角度来考虑如何应对故障。

  • 常见限流方式
    • 基于请求限流:指从外部请求的角度考虑限流。
    • 基于资源限流:指从系统内部考虑,找到影响性能的关键资源,对其使用上限限制。

案例


如果你来设计一个整点限量秒杀系统,包括登录、抢购、支付(依赖支付宝)等核心功能,你会如何设计接口级的故障应对手段?

  • 思路:
    • 降级(丢车保帅):在秒杀时,通过服务降级把注册、修改个人信息等非核心功能关闭掉。
    • 熔断:支付依赖第三方服务,要设置熔断策略,熔断后要给出友好提示,比如10分钟后再来支付。
    • 限流:抢购下单接口采用限流方式,如抢购1000件商品,则设置2000大小的队列,请求超过2000后直接拒绝掉。


原文链接:https://blog.csdn.net/qq_43842093/article/details/122009237

posted on 2023-05-22 09:39  gogoy  阅读(845)  评论(0编辑  收藏  举报

导航