一文看懂限流熔断降级

引言

目前分布式微服务架构已经被大多数企业接受,它的优点很多:

  • 水平扩展和弹性伸缩 - 提升系统承载容量
  • 高可用支持 - 由于多点部署,消除了单点风险
  • 模块化设计 - 系统的重用度更高
  • 高内聚低耦合 - 每个微服务功能明确,职责单一,代码容易了解,开发和迭代的速度更快
  • 扩展性 - 以标准协议如REST、SOAP、RPC方式进行服务间交互,解除对技术栈的绑定,具备更好的扩展性。

与此同时,分布式微服务设计带来了系统设计复杂,如外部的一个调用需要通过多个服务协同完成,增加了调用链层级,也对系统的健壮性提出了更高的要求。

例如面对下面的场景,分布式微服务应该如何处理:

  • 双十一流量峰值
  • 微博热搜
  • 恶意爬虫
  • 下游系统服务不稳定引起的雪崩

什么是限流

是指对当前的服务实例设定每秒可以允许请求的服务数量,当超过该数量的时候,则不在接受该调用。

限流是限制服务实例的并发的请求访问量,超过阈值则拒绝。

涉及的算法包括:计数器、滑动窗口、漏桶算法、令牌桶算法。

什么是降级

当出现服务吞吐量巨大,资源不够用的情况,可以使用降级服务观点部分不重要、性能差的服务,避免占用资源,保障主体业务正常使用。

什么是熔断

当服务实例依赖远程服务,而远程服务没有做过过载保护,就会因为请求导致阻塞而耗尽本服务实例资源,开始可能是局部影响,但是往往由于分布式服务彼此之间的各种依赖关系,而导致整体不可用,造成雪崩效应。这时候就需要服务实例设置熔断,熔断后会做一些降级策略,即熔断降级。

Spring Cloud 限流熔断降级实现方式

  • 限流的实现方式有很多 :RateLimiter、Bucket4j、Resilience4j
  • 熔断降级则主要可以依赖Hystrix

相关主题: