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