写在前面
本文一起看下限流,熔断,降级的概念。
1:限流
限制单位时间内的请求数,超过的则拒绝或其他。常用的算法有滑动时间窗口,漏桶算法,令牌桶算法。
2:熔断
在分布式的场景中,一个请求可能涉及到多个微服务间的调用,当某个下游微服务出现问题时,可能会导致其调用服务不可用,这个影响不断被方法,最终可能导致整个微服务集群不可用,如下图:
服务D不可用,可能会很快耗尽服务B的线程资源导致服务B也不可用,接着服务A也不可用,为了处理这种情况,我们就需要在服务D不可用时,服务B停止向服务D发起请求,而是直接返回错误或是其他(其实就是执行降级逻辑)
,整个停止访问不可用服务
的动作就叫做熔断,当然,在服务恢复后还要能够重新访问,这也是熔断需要考虑的问题。
3:降级
降级,即降低服务等级,并不是不服务了,而是服务的等级降低了,比如你点外卖,如果点外卖的人少,外卖小哥二十分钟就给你送过来了,如果点外卖的人很多,外卖小哥四十分钟才给你送过来,结果也给你送过来了,只不过慢了点(降级了)
,那么降低服务质量的手段都有哪些呢,包括但不限于如下:
1:服务异常或超时,返回错误给客户端
2:耗时的同步操作,转换为异步
3:监控到流量激增,系统压力增大,及时关闭某些非核心功能,即丢车报帅。
4:正常给客户端返回结果,但质量降低,如返回的图片从高清图片,返回非高清图片
...等等其他
写在前面
参考文章列表
服务降级与服务熔断区别 。
10张图带你彻底搞懂限流、熔断、服务降级 。