Sentinel原理及调用链解析

需积分: 0 0 下载量 107 浏览量 更新于2024-01-17 收藏 2.14MB PDF 举报
Sentinel是一款开源的分布式系统的流量防卫系统,它可以有效地保护服务不受流量超载的影响。Sentinel主要通过限流、熔断降级、系统自适应、热点参数流控等功能,来对流量进行有效的管理和保护。而Sentinel的核心原理就是一系列的Slot组成的调用链。每个Slot都有着不同的功能职责,用于保证整个流程的顺畅运行。 首先,我们来了解一下Sentinel的原理-调用链。首先,整个调用链是基于ThreadLocal来实现的。当一个请求到来时,首先会从ThreadLocal中获取相关的上下文信息,如果能获取到,则直接返回;如果获取不到,则会继续执行下一步。接着,会从一个static的map中根据上下文的名称获取相关的信息,如果能获取到,则直接返回。这样,就可以保证整个请求的上下文信息都能得到有效的管理和保护。 接下来,我们来分析一下每种Slot的功能职责。NodeSelectorSlot是负责收集资源的路径,将这些资源的调用路径以树状结构存储起来,用于根据调用路径来限流降级。ClusterBuilderSlot用于存储资源的统计信息以及调用者信息,例如该资源的RT、QPS、thread count等,这些信息将作为多维度限流、降级的依据。StatisticsSlot则用于记录、统计不同维度的runtime信息。SystemSlot通过系统的状态,例如load1等,来控制总的入口流量。AuthoritySlot根据黑白名单来做相应的控制。FlowSlot根据预设的限流规则以及前面Slot统计的状态来进行限流。DegradeSlot通过统计信息以及预设的规则来进行熔断降级。 在整个流程中,每个Slot执行完业务逻辑处理后,会调用fireEntry()方法,该方法将会触发下一个节点的entry方法,下一个节点又会调用其fireEntry,以此类推直到最后。这种方式保证了整个调用链的顺畅运行。 总结来说,Sentinel的原理-调用链通过一系列的Slot组成的调用链,来对流量进行有效的管理和保护。每个Slot都有着不同的功能职责,用于保证整个流程的顺畅运行。这种方法有效地保护了服务不受流量超载的影响,让服务能够更加可靠、稳定地运行。Sentinel的原理-调用链为分布式系统的流量保护提供了一种有效的解决方案,是当前流量防卫系统中的一大利器。