Sentinel源码
文章平均质量分 93
白鸽呀
这个作者很懒,什么都没留下…
展开
-
Sentinel源码剖析之滑动窗口
咱们就拿 60个窗口,这个60个窗口放在数组中,窗口长度是1s 来计算,看看当前时间戳的一个时间窗口是是在数组中哪个位置。比如说当前时间戳是1609085401454 ms算出秒 = 1609085401454 /1000(窗口长度)在数组的位置 = 算出秒 %数组长度。转载 2022-11-18 16:44:33 · 891 阅读 · 0 评论 -
Sentinel源码剖析之常用限流算法原理实现
限流顾名思义,就是对请求或并发数进行限制;通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限,就需要对调用我们服务的上游请求进行限制,以防止自身服务由于资源耗尽而停止服务。在限流中有两个概念需要了解。阈值:在一个单位时间内允许的请求量。如 QPS 限制为10,说明 1 秒内最多接受 10 次请求。拒绝策略:超过阈值的请求的拒绝策略,常见的拒绝策略有直接拒绝、排队等待等。限流的手段通常有计数器、漏桶、令牌桶。原创 2022-11-17 19:05:30 · 1446 阅读 · 2 评论 -
Sentinel源码剖析之执行流程
上述讲了SCG Sentinel执行流程,这里给一个SpringBoot集成Sentinel的执行流程,两则本质上执行流程一致StatisticSlot计数,底层通过LongAdder实现,why?1、LongAdder底层通过cas保证高并发情况下的线程安全2、LongAdder底层通过add,decrement,sum这些现成的API可以使用熔断器在哪计数?下篇写为什么要用滑动窗口算法?原理是什么?怎么实现?下篇写。原创 2022-11-17 16:15:18 · 967 阅读 · 1 评论 -
Sentinel源码剖析之初始化
Sentinel初始化,有个几个核心对象SphU sentinel基本APIEnv 组件初始化CommandCenterInitFunc 命令中心,负责接收命令CommandHandler,接收的命令,最终的处理器HeartBeatSenderInitFunc 心跳发送器,维护与dashboard的心跳,10s一次简单吧嘿嘿!!!原创 2022-11-09 20:53:00 · 825 阅读 · 0 评论 -
Java-SPI源码剖析
SPI机制是java提供的扩展机制,主要用来为第三方应用进行扩展用的,自身服务只需要提供SPI接口,第三方应用自己实现SPI接口即可。SPI原理无非是内部通过LazyInterator进行处理,先找到SPI配置文件地址,逐一读取配置项,进行类加载获取class。当然内部维护一套缓存机制provider,不需要每次都读取SPi配置文件,Class.ForName,优化性能。原创 2022-11-08 20:29:04 · 386 阅读 · 0 评论 -
Sentinel源码剖析之核心组件作用和介绍
Sentinel 是分布式系统的防御系统。以流量为切入点,通过动态设置的流量控制、服务熔断降级、系统负载保护等多个维度保护服务的稳定性,通过服务降级增强服务被拒后用户的体验。官网:https://github.com/alibaba/Sentinel/wiki/原创 2022-11-02 21:12:17 · 456 阅读 · 0 评论