Sentinel源码2-深入剖析核心类及工作原理
2023-11-20 03:28:57
Sentinel是一个用于保护微服务系统的开源工具。它可以实现流控、熔断、系统保护等功能,帮助微服务系统应对突发流量和故障。
Sentinel的核心骨架是ProcessorSlotChain。其将不同的Slot(限流、降级、系统保护) 按照顺序串在一起(责任链模式)。
核心类
- ProcessorSlotChain :它是Sentinel的核心类,负责将不同的Slot按照顺序串联起来。当请求到达时,它会逐个调用每个Slot的process方法。
- Slot :它是Sentinel中的一个抽象类,不同的Slot可以实现不同的功能,如限流、降级、系统保护等。
- DefaultSlotChain :它是ProcessorSlotChain的一个默认实现,它包含了Sentinel中常用的Slot。
工作原理
Sentinel的工作原理如下:
- 当请求到达时,它会首先被ProcessorSlotChain拦截。
- ProcessorSlotChain会逐个调用每个Slot的process方法。
- 如果某个Slot返回false,则表示该请求被拒绝。
- 如果所有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中的限流功能可以限制请求的并发数,降级功能可以将请求重定向到另一个服务,系统保护功能可以保护系统免受过载的侵害。