![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
sentinel
文章平均质量分 72
tydhot
gogogo
展开
-
Sentinel 中限流算法的实现
本文的github地址点击这里Sentinel 中漏桶算法的实现Sentinel 中漏桶算法通过 RateLimiterController 来实现,在漏桶算法中,会记录上一个请求的到达时间,如果新到达的请求与上一次到达的请求之间的时间差小于限流配置所规定的最小时间,新到达的请求将会排队等待规定的最小间隔到达,或是直接失败。@Overridepublic boolean canPass(Node node, int acquireCount, boolean prioritized) { i原创 2021-01-24 21:54:53 · 1254 阅读 · 0 评论 -
Sentinel底层LongAdder的计数实现
本文的github地址LongAdder 的原理在 LongAdder 中,底层通过多个数值进行累加来得到最后的结果。当多个线程对同一个 LongAdder 进行更新的时候,将会对这一些列的集合进行动态更新,以避免多线程之间的资源竞争。当需要得到 LongAdder 的具体的值的时候,将会将一系列的值进行求和作为最后的结果。在高并发的竞争下进行类似指标数据的收集的时候,LongAdder 通常会和 AtomicLong 进行比较,在低竞争的场景下,两者有着相似的性能表现。而当在高并发竞争的场景下,Lo原创 2020-12-31 16:43:36 · 343 阅读 · 0 评论 -
sentinel 时间窗口的实现
本文的github地址点击这里获取时间窗口的主要流程在 Sentinel 中,主要是通过 LeapArray 类来实现滑动时间窗口的实现和选择。在 sentinel 的这个获取时间窗口并为时间窗口添加指标的过程中,主要的流程为:根据当前时间选择当前时间应该定位当前时间应该属于的时间窗口 id。根据时间窗口 id 获取时间窗口。这里可能会存在三种情况:时间窗口还未建立,那么将会为此次流量的进入建立一个新的时间窗口返回,并且接下来这个时间窗口内的获取请求都将返回该窗口。时间窗口已经建立的情况下原创 2020-12-10 10:07:20 · 676 阅读 · 0 评论