首页
首页
BOT
沸点
课程
直播
活动
AI刷题
NEW
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
要变酷奥
掘友等级
终身学习。
获得徽章 1
动态
文章
专栏
沸点
收藏集
关注
作品
赞
7
文章 6
沸点 1
赞
7
返回
|
搜索文章
赞
文章( 6 )
沸点( 1 )
要变酷奥
2年前
举报
#青训营笔记创作活动#
12月7日 打卡 day1
今日学习
1.为应对高并发场景下的流量高峰,通常采用限流,熔断,降级的方式去应对。
2.限流:限制系统在一定时间内并发处理的请求数,超出的流量拒绝服务
3.常用限流方式
>计数器:在一段时间间隔内统计请求的数目,超过规定阈值则拒绝服务。到了时间间隔临界点,计数器清零。
存在临界点问题。
>滑动窗口:类似tcp中的滑动窗口。将时间段看做一个窗口,划分为多个格子,每个格子代表一个小小的时间段。统计格子里的请求总数,当时间过了一个格子,窗口进行滑动,计数器减去最早的格子的请求数。
格子数目影响算法精度,无法从根本解决临界点问题。
>漏桶:原理是一个固定容量的漏铜,按照固定速率流出水滴。计数器统计当前正在处理的请求数,当一个请求完成,则计数器减减,新请求到达,计数器加加,当到达阈值,拒绝服务。请求处理的速度通常是固定的,就是水流入的速度不可控,但是流出的速度可控。最大出水率(处理请求速度)就是最大速率。
不能应对突发流量。
>令牌桶:控制发送到网络上的数据数目,在令牌桶中按照固定速率生成令牌,只有拿到令牌才能处理,支持一次拿多个,控制平均流入速度。
>Redis+lua脚本实现分布式限流。关键是将限流服务做成原子化。可以借助Redis的计数器,lua执行的原子性实现。
展开
新来个技术总监,把限流实现的那叫一个优雅,佩服! - 掘金
juejin.cn
青训营-快乐出发
分享
评论
1
个人成就
文章被点赞
15
文章被阅读
4,870
掘力值
327
关注了
1
关注者
2
收藏集
5
关注标签
8
加入于
2022-10-29