Spring Cloud Finchley.SR1 的学习与应用 7
Hystrix 分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况,这种现象被称为服务雪崩效应。为了应对服务雪崩,一种常见的做法是手动服务降级。而 Hystrix 的出现,给我们提供了另一种选择。 服务雪崩效应 在微服务架构中, 我们将系统拆分成了很多服务单元, 各单元的应用间通过服务注册 与订阅的方式互相依赖。 由于每个单元都在不同的进程中运行,依赖通过远程调用的方式 执行, 这样就有可能因为网络原因或是依赖服务自身间题出现调用故障或延迟, 而这些问 题会直接导致调用方的对外服务也出现延迟, 若此时调用方的请求不断增加, 最后就会因 等待出现故障的依赖方响应形成任务积压, 最终导致自身服务的瘫痪。 举个例子, 在一个电商网站中, 我们可能会将系统拆分成用户、 订单、 库存、 积分、 评论等一系列服务单元。 用户创建一个订单的时候, 客户端将调用订单服务的创建订单接 口,此时创建订单接口又会向库存服务来请求出货(判断是否有足够库存来出货)。 此时若 库存服务因自身处理逻辑等原因造成响应缓慢, 会直接导致创建订单服务的线程被挂起, 以等待库存申请服务的响应, 在漫长的等待之后用户会因为请求库存失败而得到创建订单 失败的结果。 如果在高并发情况之下,因这些挂起的线程在等待库存服务的响应而未能释 放, 使得后续到来的创建订单请求被阻塞, 最终导致订单服务也不可用。即雪崩效应