springcloud微服务:使用Hystrix實現微服務的容錯處理

一.實現容錯的手段
1.雪崩效應
如果在A的链路上某个或几个被调用的子服务不可用或延迟较高,则会导致调用A服务的请求被堵住。 堵住的请求会消耗占用掉系统的线程、io等资源,当该类请求越来越多,占用的计算机资源越来越多的时候,会导致系统瓶颈出现,造成其他的请求同样不可用,最终导致业务系统崩溃,又称:雪崩效应。
2.造成雪崩效应的原因

  • 硬件故障
  • 负载过大(如:抢红包,双十一)
  • 代码问题

3.服务雪崩的应对策略
针对造成服务雪崩的不同原因, 可以使用不同的应对策略:

  1. 流量控制
  2. 改进缓存模式
  3. 服务自动扩容
  4. 服务调用者降级服务

流量控制 的具体措施包括:

  1. 网关限流
  2. 用户交互限流
  3. 关闭重试

4.如何容錯

  • 為網絡請求設置超時
  • 使用斷路器模式

二.使用Hystrix實現容錯
Hystrix是一個實現了超時機制和斷路器模式的工具類庫,主要通過以下幾點實現了延遲和容錯:

  • 包裹請求(使用HystrixCommand)
  • 跳閘機制
  • 資源隔離(使用線程池進行管理,超過線程池管理範圍即拒絕請求)
  • 監控
  • 回退機制
  • 自我修復

三.Hystrix的線程隔離策略和傳播上下文
隔離策略

  • THREAD
    使用該方式HystrixCommand將會在單獨的線程上執行,並發請求受線程池中的線程數量的控制
  • SENAPHORE
    信號量隔離:將會在調用線程上執行,開銷相對較小,並發請求受到信號量個數的影響

你可能感兴趣的:(Spring,Cloud,java,高並發)