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