服务熔断虽然避免了许多无用的调用,但是商品详情服务还是会因为相比不太重要的评论服务失败而不可用,那是不合理的。那能不能在评论服务请求失败时,不影响商品详情服务的正常使用呢?这时候就需要使用服务降级了。(注意,服务降级有很多种降级方式!如开关降级、限流降级、熔断降级! 熔断降级是采用了服务熔断的降级方式,可以说熔断降级是服务降级方式的一种,不要把熔断降级想为单单是熔断)
降级有两种场景:
当下游的服务因为某种原因响应过慢,下游服务主动停掉一些不太重要的业务,释放出服务器资源,增加响应速度。(开关降级)
当下游的服务因为某种原因不可用,上游主动调用本地的一些降级逻辑,避免卡顿,迅速返回给用户。(熔断降级)
Hyrtix实现服务熔断和服务降级
创建hystrix-details、hystrix-comment、hystrix-goods、hystrix-price服务模拟上图4个服务,并4个服务注册到注册中心。
添加Hystrix依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> <version>1.4.7.RELEASE<version> </dependency>