- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
应用6:断尾求生——简单限流
限流算法在分布式领域是⼀个经常被提起的话题,当系统的处理能⼒
有限时,如何阻⽌计划外的请求继续对系统施压,这是⼀个需要重视
的问题。⽼钱在这里用“断尾求生”形容限流背后的思想,当然还有
很多成语也表达了类似的意思,如弃卒保⻋、壮⼠断腕等等。
除了控制流量,限流还有⼀个应用⽬的是用于控制用户⾏为,避免垃
圾请求。⽐如在UGC社区,用户的发帖、回复、点赞等⾏为都要严
格受控,⼀般要严格限定某⾏为在规定时间内允许的次数,超过了次
数那就是⾮法⾏为。对⾮法⾏为,业务必须规定适当的惩处策略。
如何使用Redis来实现简单限流策略?
⾸先我们来看⼀个常⻅的简单的限流策略。系统要限定用户的某个
⾏为在指定的时间里只能允许发生N次,如何使用Redis的数据结
构来实现这个限流的功能?
我们先定义这个接口,理解了这个接口的定义,读者就应该能明白我
们期望达到的功能。
应用6:断尾求生——简单限流
限流算法在循环领域是一个经常被提起的话题,当系统的处理能力有限时,
如何计划外的请求继续对系统施压,这是一个需要重视的问题。老钱在
这里用“尾断求生”的意思表示限流背后的思想,当然还有很多成语也表达
了类似的,如弃卒保、壮士断腕等等。
除了流量、限流之外还有一个应用目的是为了控制用户行为,避免罚款请求。
比如在UGC社区,用户的发帖、回复、点赞等行为控制要严格格受控,一般要
严格限定某行为在规定的时间内允许的次数,超过了次数那就是违法行为。对
行为业务,必须规定适当的惩罚处策略。
如何使用Redis来实现简单的限流策略?
首先我们来看一个允许常见的简单的限流策略。系统要限制用户的某个
行为在指定的时间里只能发生N次,如何使用Redis的数据结构来实现
这个限流的功能?
我们首先定义了这个接口,理解了这个接口的定义,读者就应该能够明
白我们想要达到的功能。
#指定用户user_id的某个⾏为action_key在特定的时间内
period只允许发生⼀定的次数max_count
defis_action_allowed(user_id,action_key,
period,max_count):
returnTrue
#调用这个接口,⼀分钟内只允许最多回复5个帖子
can_reply=is_action_allowed(laoqian,reply,
60,5)
ifcan_reply:
do_reply()
else:
raiseActionThresholdOverflow()
先不要继续往后看,想想如果让你来实现,你该怎么做?
解决方案
这个限流需求中存在⼀个滑动时间窗口,想想zset数据结构的
score值,是不是可以通过score来圈出这个时间窗口来。而且我
们只需要保留这个时间窗口,窗口之外的数据都可以砍掉。那这个
zset的value填什么⽐较合适呢?它只需要保证唯⼀性即可,用
uuid会⽐较浪费空间,那就改用毫秒时间戳吧。
#指定用户user_id的某种行为action_key在特定的期限内只允
许发生一定的次数max_countdefis_action_allo
wed(user_id,action_key,period,max_count):returnTrue#
调用这个接口,一分钟内只允许最多回复5个帖子can_reply=
is_action_allowed(laoqian,reply,60,5)ifcan_reply:
do_reply()else:ActionThresholdOverflow()
您可能关注的文档
- Xcode快捷键使用与优化处理.pdf
- 考研验:择校择专与高效复习方法.pdf
- 2020年交大附中物理自招模拟试卷四.pdf
- 欧蓝德离合器大修手册与技术要求.pdf
- 正弦交流电三种表示形式及其转换方法.pdf
- 2014年5月雅思口语Part 2人物类话题预测.pdf
- 泌尿男性生殖系统先天畸形疾病诊疗要点与治疗策略.pdf
- 管理练习题高频考点提炼与.pdf
- 人教版小学数学四下运算定律复习教学设计.pdf
- 台式计算机常用手册-S手册年11月.pdf
- 3.1笔墨之美 课件 2025湘美版美术八年级上册.pptx
- 4.10认识船(教学课件)科学人教鄂教版二年级上册2025.pptx
- 第12课《 巧妙化解冲突》 课件 北师大版心理健康八年级上册.pptx
- 浙教版信息科技四年级下册全册教学设计教案.docx
- 2.3游戏中的观察(教学课件)科学教科版一年级上册2025.pptx
- 第13课《 合作的秘诀》课件 北师大版心理健康七年级上册.pptx
- 5.24 制作“冰琥珀”(教学课件)科学青岛版五四制三年级上册2025.pptx
- 人自然社会第9课《面对考试,你准备好了吗》课件.pptx
- 浙教版信息科技四年级下册全册学习任务单.docx
- 4.10认识船(教学课件)科学人教鄂教版二年级上册2025.ppt
原创力文档


文档评论(0)