![实战Alibaba Sentinel:深度解析微服务高并发流量治理](https://wfqqreader-1252317822.image.myqcloud.com/cover/429/43738429/b_43738429.jpg)
3.1.3 自定义组装ProcessorSlotChain
Sentinel使用SlotChainBuilder将多个ProcessorSlot构造成一个ProcessorSlotChain,由ProcessorSlotChain按照ProcessorSlot的注册顺序调度这些ProcessorSlot。
Sentinel使用Java SPI加载SlotChainBuilder,支持使用者自定义SlotChainBuilder,相当于提供了插件的功能。
默认使用的SlotChainBuilder是DefaultSlotChainBuilder。DefaultSlotChainBuilder构造ProcessorSlotChain的源码如下。
![](https://epubservercos.yuewen.com/9A25A7/23020654801681306/epubprivate/OEBPS/Images/42670-00-61-1.jpg?sign=1738844733-cTzLLDgfZy6hec0d4Ao0s3Ef7WZSej9f-0-6e3d93345b0d71d4ac44b118ab2decaf)
• build方法:用来创建DefaultProcessorSlotChain实例,并注册ProcessorSlot,如NodeSelectorSlot、ClusterBuilderSlot、LogSlot、StatisticSlot、AuthoritySlot、SystemSlot、FlowSlot、DegradeSlot。
DefaultSlotChainBuilder注册的ProcessorSlot并非都是必需的,如果注册的ProcessorSlot中有些用不到,那么可以自己实现一个SlotChainBuilder,自己构造ProcessorSlotChain。
例如,可以将LogSlot、AuthoritySlot和SystemSlot去掉,实现这个操作只需要两步。
(1)编写MySlotChainBuilder类,实现SlotChainBuilder接口,代码如下。
![](https://epubservercos.yuewen.com/9A25A7/23020654801681306/epubprivate/OEBPS/Images/42670-00-62-1.jpg?sign=1738844733-cSoIpFqFfkoxpXtYsa9u1Uekk1jQ9CCe-0-950b8ae39a3d6a18b830c264e7eeb7d4)
(2)在当前项目的resources/META-INF/services目录下添加名称为com.alibaba.csp.sentinel. slotchain.SlotChainBuilder的接口配置文件,并在配置文件中注册MySlotChainBuilder类,配置代码如下。
![](https://epubservercos.yuewen.com/9A25A7/23020654801681306/epubprivate/OEBPS/Images/42670-00-62-2.jpg?sign=1738844733-MtEbBekKC36mw2PZmS5W0Em3eqvF1Heq-0-d9f23049715531589d10d9e0162b58b6)
需要注意的是ProcessorSlot的注册顺序,NodeSelectorSlot需要作为ClusterBuilderSlot的前驱节点,ClusterBuilderSlot需要作为StatisticSlot的前驱节点,否则Sentinel运行会出现Bug。但可以将DegradeSlot放在FlowSlot的前面。