系统负载过高,突发流量或者网络等各种异常情况介绍,常用的解决方案
服务熔断机制
熔断机制是应对雪崩效应的一种微服务链路保户机制,当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的相应信息。当检测当该节点微服务调用响应正常后恢复调用链路,熔断机制的注解是@HystrixCommand
服务熔断就是相当于我们电闸的保险丝,一旦发生服务雪崩的,就会熔断服务,通过维护一个自己的线程池,当线程达到阈值的时候就启动服务降级,如果其他请求继续访问就直接返回fallback的默认值
服务降级
降级一般是从整体负荷考虑,当某个服务熔断之后,服务器将不再被调用,客户端可自己准备一个本地的fallback回调,返回一个缺省值,虽然服务水平下降,但能用,比直接挂掉要强。虽然此操作是有损的,但有些服务不能降级,比如下单,可降级的功能,比如购物车
熔断和降级互相交集
相同点:
1.都是从可用性和可靠性出发的,防止系统崩溃
2.最终让用户体验的是某些功能不能用
不同点:
1.服务熔断一般是下游服务故障导致的,而服务降级一般是从整体系统符合考虑的,由调用方控制
思路
熔断例子
下单服务-》商品服务
-》用户服务(出现异常-》熔断)如果没有熔断的话,一直调取用户服务,10次有9次失败,导致用户一直不能下单成功,此时对用户服务熔断,直接调取完商品服务返回,即使数据信息里不存用户信息,即使这样做是有损的,但为了不影响整体功能还是可以这样做的
降级例子
峰值期间,一个服务可能需要调其它不重要服务,为了保证返回服务数据速度,临时将一些服务降级不调取
旅行箱例子一:只带核心的物品,抛弃非核心的,等有条件的时候再去携带其它物品
双十一例子二:双十一12点进入商品页面,用户访问峰值过高,导致服务压力大,可以将一些非核心服务不去调取,比如商品相关推荐,评论也是可以断掉的,只保留很关键的数据,比如商品的具体信息,价格,相关信息等。