Sentinel底层原理分析
原理 分析 底层 sentinel
2023-09-27 14:19:50 时间
Sentinel底层原理分析
1 常见的限流算法
1.1 计数器
计数器算法是限流算法里最简单也是最容易实现的一种算法,简单来说就是规定单位时间处理的请求数量规定单位时间处理的请求数量。比如我们规定我们的一个接口一分钟只能访问100次的话。 在一开始,我们设置一个计数器counter,每当一个请求过来,counter就加1,如果counter的值大于100并且该请求与第一个请求的间隔时间还在1分钟之内,那么说明请求数过多,触发限流。如果该请求与第一个请求的间隔时间大于1分钟,且counter的值还在限流范围内,那么就重置counter,具体算法的示意图如下:
问题:这个算法虽然简单,但是有一个十分致命的问题,那就是临界问题:假设有一个恶意用户,他在0:59时,瞬间发送了100个请求,并且1:00又瞬间发送了100个请求,那么其实这个用户在1秒里面,瞬间发送了200个请求。我们刚才规定的是1分钟最多100个请求, 瞬间超过我们我们阈值的两倍。用户有可能通过算法的这个漏洞,压垮我们的应用。实现的java代码如下:
相关文章
- Spark之Task原理分析
- Seata AT事务底层原理分析
- 【MySQL】InnoDB行格式、数据页结构以及索引底层原理分析
- 深入理解overlayfs(二):使用与原理分析
- 【编译原理笔记】抽象语法树翻译为汇编语言
- 算法的复杂性详解及原理
- mssql分页原理及效率分析
- C++——重载原理分析
- Block、委托、回调函数原理剖析(在Object C语境)——这样讲还不懂,根本不可能!
- Elastic-Job原理分析(version:2.1.4)
- ConcurrentHashMap底层实现原理(JDK1.8)源码分析
- Redis高可用之主从复制原理演进分析
- Hadoop(十四)MapReduce原理分析
- 分布式事务(1)---2PC和3PC原理
- 《JS原理、方法与实践》- canvas作图(四)- 插入文本和图片
- SpringBoot自动装配原理分析,比如@SpringBootApplication注解,@SpringBootConfiguration注解,@EnableAutoConfiguration注解
- kubernetes之Scheduler原理分析
- IOS底层原理 -5.运行时(1)
- js--new 的实现原理
- 【@Param注解】| 台面使用——>底层原理分析
- HBase原理-要弄懂的sequenceId
- 【Android 应用开发】Paint 滤镜原理 之 图像结构 ( 图片文件二进制分析 | PNG文件结构 | 数据块结构 | IHDR 数据块详解 )
- Android XListView实现原理讲解及分析
- 数据库连接池的原理没你想得这么复杂
- AjaxFileUpload 方法与原理分析
- PHP底层原理分析和底层扩展编写
- react-redux原理分析