首页 > 编程语言 >Sentinel源码分析总结

Sentinel源码分析总结

时间:2022-12-15 20:00:50浏览次数:69  
标签:总结 算法 源码 https Sentinel com 限流


写作目的

最近在看Sentinel源码,遇到了几个问题,想再此记录和分享一下遇到的几个问题,方便读者看到我的文章后就不用在继续搜





注意:版本要和链接中的一致

原理讲解参考视频

​图灵学院诸葛老师VIP教程一小时搞定限流熔断组件S​​​
​​​尚硅谷-阿里Sentinel核心源码解析19讲​​​​ https://www.bilibili.com/video/BV1My4y1W726​

源码分析总结

限流算法分析

经典的限流算法有:漏斗算法、令牌桶算法和滑动窗口算法
Sentinel使用的是滑动窗口算法
​​RateLimiter使用的是令牌桶

参考:​​​https://www.bilibili.com/video/BV1yb4y1k7hN?p=4​

Sentinel实现原理

AOP

向容器里添加一个Aspect

//SentinelAutoConfiguration
@Bean
@ConditionalOnMissingBean
public SentinelResourceAspect sentinelResourceAspect() {
return new SentinelResourceAspect();
}

而该Aspect是环绕通知

@Aspect
public class SentinelResourceAspect extends AbstractSentinelAspectSupport {

@Pointcut("@annotation(com.alibaba.csp.sentinel.annotation.SentinelResource)")
public void sentinelResourceAnnotationPointcut() {
}

@Around("sentinelResourceAnnotationPointcut()")
public Object invokeResourceWithSentinel(ProceedingJoinPoint pjp) throws Throwable {
//do something
}


}

责任链

Sentinel源码分析总结_ide


里面有很多Slot,每一个Slot的作用无非就是统计和拦截,我们以拦截为例,当经过AuthoritySlot、SystemSlot等规则时,当每一个Slot判断不通过时抛异常,在最外层捕获不同的异常再进行统计,从而实现拦截。

未解决的问题

Sentinel中有一个CommonFilter才是拦截的入口。我debug的时候如果把QPS设置为0.01,那么其实请求是走不到SentinelResourceAspect 的invokeResourceWithSentinel方法的,但是还是抛出了Sentinel的异常,后来发现是在CommonFilter中也执行了

SphU.entry

那么此时问题来了,在Filter中执行一遍上面的方法,又在进入Controller之前的AOP方法中又执行了一遍,这是为什么呢?这个点没有get到。

参考

Nacos服务注册中

服务:
​​​https://gitee.com/cbeann/Demooo/tree/master/sentinel-provider-demo​​​
视频:
​​​图灵学院诸葛老师VIP教程一小时搞定限流熔断组件Sentinel(本文作者推荐)​​​:https://www.bilibili.com/video/BV1yb4y1k7hN?p=1

​​​尚硅谷-阿里Sentinel核心源码解析19讲​​:https://www.bilibili.com/video/BV1My4y1W726


标签:总结,算法,源码,https,Sentinel,com,限流
From: https://blog.51cto.com/cbeann/5945922

相关文章

  • [附源码]Python计算机毕业设计Django基于vuejs的爱宠用品销售app
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • Java同步器之Condition源码分析
    一、概述条件锁,就是指在获取锁之后发现当前业务场景自己无法处理,而需要等待某个条件的出现才可以继续处理时使用的一种锁。比如,在阻塞队列中,当队列中没有元素的时候是无......
  • 【FAQ】在华为鸿蒙车机上集成华为帐号的常见问题总结
    随着新一代信息技术与汽车产业的深度融合,智能网联汽车正逐渐成为汽车产业发展的战略制高点,无论是传统车企还是新势力都瞄准了“智能座舱”这种新一代人机交互方式。面对竞......
  • 12月15日内容总结——ORM执行原生SQL语句、双下划线数据查询、ORM外键字段的创建、外
    目录一、ORM执行SQL语句二、神奇的双下划线查询三、ORM外键字段的创建复习MySQL外键关系外键字段的创建1.创建基础表(书籍表、出版社表、作者表、作者详情)2.确定外键关系3......
  • 算法第一章归纳总结
    算法的四个性质:输入:有零个或者多个输入输出:至少有一个输出确定行:组成算法的每条指令清晰、无歧义有限性:算法中每条指令的执行次数有限。执行每条指令的时间也有限......
  • SQL的使用总结
    select*fromempselect*fromdeptselect*fromjobselect*fromsalarygrade--1.查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述SELECT t1......
  • 待验证总结
    ​​1、避免过多if-else的几种方法 ​​2、​​ideapom.xml依赖版本号报错​​3、​​记录一个IDEA中MAVEN更新私服jar,download不下来的原因​​4、​​Java如何比较两......
  • DDPM+DDIM总结
    \(\color{red}{注:以下只是个人总结,由于水平有限,基本是参考文献中的原文,感兴趣请看原文。}\)1.论文相关论文目录:DDPMDenoisingDiffusionProbabilisticModelsEMA......
  • DDPM+DDIM总结
    \(\color{red}{注:以下只是个人总结,由于水平有限,基本是参考文献中的原文,感兴趣请看原文。}\)1.论文相关论文目录:DDPMDenoisingDiffusionProbabilisticModelsEMA......
  • 超好用的inno打包工具(免费)学习总结
    Innosetup简介InnoSetup是一个免费的Windows安装程序制作软件。优点:免费、功能全面、性能稳定。主要功能:1.支持现在所有正在使用的32位Windows版本:Windows95......