源码解读一 :ProcessorSlot责任链

源码解读一 :ProcessorSlot责任链

概述

在总体设计章节中,我们知道 Sentinel 是通过不同的 ProcessorSlot 实现不同的功能,并且将不同的 ProcessorSlot 组装为一个责任链,也就是 ProcessorSlotChain,来对每一次资源访问使用不同 ProcessorSlot 进行处理从而实现对应的功能。那么在此之前,首先就需要进行 ProcessorSlotChain 的创建。

在 Sentinel 中,每一个资源都有与之对应的独立的 ProcessorSlotChain 。为此,Sentinel 中提供了一个方法 CtSph#lookProcessChain 来获取资源对应的 ProcessorSlotChain 。下面会针对整个获取和初始化的流程进行分析。

代码实现

初始化 ProcessorSlotChain

获取 SlotChainBuilder

Sentinel 所有的扩展点都是通过 SPI 的方式来实现。获取 ProcessorSlotChain 也不例外。对象 CtSph 内部有一个 Map 类型的属性 chainMap 用于存储资源和 ProcessorSlotChain 的映射关闭。方法 CtSph#lookProcessChain 首先是在这个 chainMap 中查找当前资源是否已经存在对应的 ProcessorSlotChain 。如果存在的话直接返回即可,如果不存在则新建对应的链条,并且汇总之前 chainMap 中的数据,创建一个新的 chainMap 对象来取代原先的 chainMap 对象。采用这种方式是因为一个系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值