业务高峰期时。您可以通过服务降级功能,对部分的服务消费者进行降级操作,让不重要的业务方不进行真实地调用,直接返回降级的结果,将宝贵的下游服务提供者资源保留给重要的业务调用方使用,从而提升整体服务的稳定性。本文介绍如何创建并配置服务降级规则。
背景信息
已有的Sentinel、Hystrix等开源的熔断降级,主要针对不稳定的弱依赖服务调用进行熔断降级,暂时切断不稳定调用,避免局部不稳定因素导致整体的雪崩。熔断降级作为保护自身的手段,通常配置在服务消费端。
服务降级功能既支持在服务调用报错时候进行降级,也支持在服务调用正常时开启。这样可以保护服务提供者,将有限的资源更多地分配给关键的服务消费者。
下文以一个示例介绍Spring Cloud服务降级的使用场景。
- 未配置服务降级
Consumer 1、Consumer 2和Consumer 3默认调用ProductService中productservice服务的所有Path(/getIp、/product/{id}和/products)。
未配置服务降级规则的调用关系如下图所示。
- 配置服务降级
您可以在Consumer 1调用ProductService中productservice服务的/getIp路径时进行降级。
配置Consumer 1时,降级策略选择返回自定义JSON数据,执行策略选择所有请求生效。表示当Consumer 1调用productservice的/getIp时,不需要真实的调用ProductService,而是会主动根据降级规则进行本地服务降级。
配置完服务降级规则的调用关系如下图所示。