背景
分布式系统中的调用关系错综复杂,如何保障整个系统平稳运行则显得尤为重要。
限流、熔断和降级应运而生…
限流
为了保障下游服务稳定性,通常会提前预估调用QPS,一旦超过预估QPS则可以进行限流,拒绝超出预估的请求。
常见的限流算法有固定窗口、滑动窗口、漏桶和令牌桶,后续会专门出一篇文章。
熔断
当下游服务不可用或者响应过慢,可以切断调用链路直接返回结果,保证自身服务的可用性。
降级
当服务器压力剧增,可以考虑对非核心业务流程进行降级,保证核心功能可用。
逻辑上讲,限流和熔断都可以算降级的一种。
总结
- 限流:限制范围时间内的请求数
- 熔断:不因下游服务故障造成当前服务不可用
- 降级:暂停其他业务保证自身核心业务正常运行