Sentinel核心算法设计与实现

这里我们先一起了解一下Sentinel的一些比较重要的概念 ,Sentinel 整体工作流程采用责任链模式,功能定义Slot,计数通过Node,在Slot中通过选用不同的Node实现不同的流控模式。

  • Node 用于不同纬度的计数
  • Slot 实现不同的功能
  • Resource 受保护的资源
  • Rule 保护资源规则

Sentinel核心算法设计与实现_第1张图片

 

回顾完了Sentinel的基本概念那么我们一起开始Sentinel源码探索之旅吧。接下来我们会从

StatisticSlot开始去探索Sentinel实现限流的细节与思路。了解Sentinel的计数和限流。

Sentinel核心算法计数原理

StatisticSlot 是限流的基石基本上后续限流所依赖的数据都在这里统计,下面我们只展开了 我们标红的两个计数,是因为下面的其他计数只是选取的计数node不同地层原理是一致的。

Sentinel核心算法设计与实现_第2张图片

 

  1. 并发数计数 这里没有使用AtomicLong而是使用 LongAdder 去做计数,虽然在低并法场景下两者性能相差不大,但在高并发场景下LongAdder情况下性能优于AtomicLong。限流大多时候都要面对高并发的场景, 所以Sentinel在很多地方都是使用的LongAdder计数的包括下面讲的滑动窗口计数。注意这里只做了计数没有计入线程

你可能感兴趣的:(算法模型,信息处理,sentinel,java,开发语言)