1 优化策略
如果把缓存和异步看作提高系统的战斗力,那限流和降级就是在防御
。
- 作为运维人员有时候太过于注重防守,比如缓存,池化,异步化,负载均衡,消息队列。这一些是为了增加系统的容量。
- 而限流和降级则关心的是一旦达到了系统的瓶颈时候怎么办, 更看重稳定性;
2 限流,降级,熔断,隔离
-
限流顾名思义,需要对各个类型的请求设置最高的QPS阈值,若高于设置的阈值则对该请求直接返回,不再调用后续资源(
限流需要结合压测,了解系统的最高水位,也是在实际开发中应用最多的一种稳定性保障手段
)。各类限流算法:- 计数器法
- 漏桶算法
- 令牌桶算法
-
降级则是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。降级如果细分,又分为 主动降级和自动降级,而自动降级要细分,又分为:
- 超时降级
- 失败次数达到一定限制降级
- 故障降级
-
熔断: 就是停止服务。生活中相关的比如股市的熔断,大盘不受控制,就熔断,不提供服务,这是保护大盘的一种方式
- 熔断: 就是停止服务。生活中相关的比如股市的熔断,大盘不受控制,就熔断,不提供服务,这是保护大盘的一种方式
- 降级: 通常是有备用方案。 你从北京到上海,天天做高铁,限制情况特殊,高铁满员,给你改成汽车。
熔断与降级的区别
:
- 降级一般是主动的,有预见性的,熔断通常是被动的
- 服务A降级以后,一般会有服务B来代替,而熔断通常是针对核心链路的处理
- 在实际开发中,熔断的下一步通常就是降级(再不降级,不废了吗)
- 还有一块是资源隔离: 让你的系统里,某一块东西,在有故障的情况下,不会耗尽系统所有的资源。
说到底,运维需要跟开发一起,不断的进行系统测试,最大并发测试,然后做好监控和报警,根据实际情况进行优化。