360°SpringCloud实践-Hystrix服务容错保护:03-032018Author:王勇1.背景2.Hystrix简介3.Hystrix应用实例5.Hystrix配置4.Hystrix工作原理解析股票简称:赛意信息股票代码:300687/4背景服务雪崩效应,一道绕不过的坎:在分布式系统中,服务与服务之间依赖错综复杂,一种不可避免的情况就是某些服务由于某种故障(比如机房的不可靠性、网络服务商的不可靠性等因素)出现不可用,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。股票简称:赛意信息股票代码:300687/5ABCDA为服务提供者,B为A的服务调用者,C和D是B的服务调用者.当A的不可用,引起B的不可用,并将不可用逐渐放大C和D时,服务雪崩就形成了。背景-服务雪崩正常ABCDABCDABCDA不可用AB不可用系统不可用时间推移股票简称:赛意信息股票代码:300687/6背景-服务雪崩雪崩原因应对策略流量激增比如异常流量(网络攻击)、用户重试导致系统负载升高采用自动扩缩容以应对突发流量,或在负载均衡器上安装限流模块缓存刷新假设A为client端,B为Server端,假设A系统请求都流向B系统,请求超出了B系统的承载能力,就会造成B系统崩溃合理使用Cache应对B系统宕机1.调用方(A系统)采用基于刷新的异步续费模式使用Cache,或者至少不能使用基于超时或刷新的简单(stupid)模式。2.调用方(A系统)每次请求Cache时检查Cache是否可用(available),如果不可用则按照一个保守的概率访问后端,而不是无所顾忌的直接访问后端。3.服务方(B系统)在反向代理处设置流量控制进行过载保护,阈值需要通过压测获得。硬件故障比如宕机,机房断电,光纤被挖断等多机房容灾,跨机房路由,异地多活等线程同步等待(最常见情景)系统间经常采用同步服务调用模式,核心服务和非核心服务共用一个线程池和消息队列。如果一个核心业务线程调用非核心线程,这个非核心线程交由第三方系统完成,当第三方系统本身出现问题,导致核心线程阻塞,一直处于等待状态,而进程间的调用是有超时限制的,最终这条线程将断掉,也可能引发雪崩使用Hystrix做故障隔离,熔断器机制等可以解决依赖服务不可用的问题股票简称:赛意信息股票代码:300687/7Hystrix简介Hystrix是由Netfilx开源的库,它提供了服务与服务之间的容错功能,主要体现在延迟容错和容错,从而做到控制分布式系统中的联动故障。Hystrix通过隔离服务的访问点,阻止联动故...