返回

Sentinel源码2-深入剖析核心类及工作原理

后端

Sentinel是一个用于保护微服务系统的开源工具。它可以实现流控、熔断、系统保护等功能,帮助微服务系统应对突发流量和故障。

Sentinel的核心骨架是ProcessorSlotChain。其将不同的Slot(限流、降级、系统保护) 按照顺序串在一起(责任链模式)。

核心类

  • ProcessorSlotChain :它是Sentinel的核心类,负责将不同的Slot按照顺序串联起来。当请求到达时,它会逐个调用每个Slot的process方法。
  • Slot :它是Sentinel中的一个抽象类,不同的Slot可以实现不同的功能,如限流、降级、系统保护等。
  • DefaultSlotChain :它是ProcessorSlotChain的一个默认实现,它包含了Sentinel中常用的Slot。

工作原理

Sentinel的工作原理如下:

  1. 当请求到达时,它会首先被ProcessorSlotChain拦截。
  2. ProcessorSlotChain会逐个调用每个Slot的process方法。
  3. 如果某个Slot返回false,则表示该请求被拒绝。
  4. 如果所有Slot都返回true,则表示该请求被允许通过。

责任链模式

Sentinel使用了责任链模式来将不同的Slot串联起来。责任链模式是一种设计模式,它可以将多个处理对象串联起来,形成一个链条。当请求到达时,它会从链条的第一个处理对象开始逐个调用,直到最后一个处理对象。

限流

Sentinel中的限流功能可以限制请求的并发数。当请求的并发数超过限流阈值时,Sentinel会拒绝新的请求。

降级

Sentinel中的降级功能可以将请求重定向到另一个服务。当某个服务出现故障时,Sentinel可以将请求重定向到另一个健康的同类服务上。

系统保护

Sentinel中的系统保护功能可以保护系统免受过载的侵害。当系统的资源使用率达到阈值时,Sentinel会拒绝新的请求。

总结

Sentinel是一个强大的工具,它可以帮助微服务系统应对突发流量和故障。Sentinel的核心骨架是ProcessorSlotChain,它将不同的Slot按照顺序串联起来。Sentinel的工作原理是当请求到达时,它会首先被ProcessorSlotChain拦截,然后ProcessorSlotChain会逐个调用每个Slot的process方法。如果某个Slot返回false,则表示该请求被拒绝,如果所有Slot都返回true,则表示该请求被允许通过。Sentinel使用了责任链模式来将不同的Slot串联起来。Sentinel中的限流功能可以限制请求的并发数,降级功能可以将请求重定向到另一个服务,系统保护功能可以保护系统免受过载的侵害。