如果服务器提供者响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直到等待者响应或超时.
在高负载情况下,如果不作任何处理,此类问题可能会导致服务消费者的资源耗尽甚至导致整个系统奔溃.
例如,曾经发生过一个案例,某电子商务网站在一个活动中.过多的并发的请求,导致用户支付的请求延时
很久都没有响应,在等待很长时间后最终失败.支付失败又导致用户重新刷新页面并再次尝试支付,进一步
增加服务器的负载.最终导致整个系统奔溃.

当依赖的服务不可用时,服务自行会不会被拖垮?

如何容错

  1. 为网络请求设置超时时间

  2. 使用断路器模式

Hystrix简介

Hystrix是有Netflix开源的一个延迟和容错库,用于隔离访问远程系统,服务或者第三方库,防止级联失败,从而
提示系统的可用性与容错性.
Hystrix主要通过以下几点实现延迟和容错.

  • 包裹请求 :
  • 跳闸机制 :
  • 资源隔离 :
  • 监控 :
  • 回退机制 :
  • 自我修复 :
1
2
3
4
5
6
7
feign:
hystrix:
enabled: true

# 说明:请务必注意,在Spring Cloud Dalston中,Feign默认是不开启Hystrix的。
# 因此,如使用Dalston请务必额外设置属性:feign.hystrix.enabled=true,否则断路器不会生效。
# 而,Spring Cloud Angel/Brixton/Camden中,Feign默认都是开启Hystrix的。无需设置该属性。

.