扩展Sentinel实现开关降级
Sentinel实现了插件功能,支持将自定义处理器插槽(ProcessorSlot)通过SPI注册到ProcessorSlotChain中,或者通过自实现SlotChainBuilder构建ProcessorSlotChain,将自定义处理器插槽注册到ProcessorSlotChain中。因此,我们可以通过自定义ProcessorSlot为Sentinel添加开关降级功能。
与限流、熔断降级等流量控制的实现一样,首先定义开关降级规则类,实现loadRulesAPI;然后提供一个Checker,由Checker判断开关是否打开,是否需要拒绝当前请求;最后自定义ProcessorSlot与SlotChainBuilder,实现拦截请求的功能。
与使用AOP实现开关降级有所不同,扩展Sentinel实现开关降级不需要在接口方法或类上添加注解,可以全部通过配置规则实现,这也是为什么选择扩展Sentinel实现开关降级功能的原因。
一个开关通常会控制很多接口,所以一个开关对应一个开关降级规则,一个开关降级规则可配置多个资源。开关降级规则类SwitchRule的代码如下。
SwitchRule类字段说明如下。
• status:开关状态,取值为open或close。
• resources:开关控制的资源。