各位老友们,我又来提问了,你们的后端服务 API 有做节流(throttle)和防抖(debounce)吗?

2020-08-18 14:20:34 +08:00
 JJstyle

先上定义:

节流:在一段时间内,规定同一个操作最多只能运行指定次数,超出的阻止。  
防抖:在一段时间内,规定同一个操作的多次运行只能让其中一个(一般是开始的一个或者最后一个)运行,其他的阻止。

(把标题中的 API 代入到上面的操作即可。)

搜索引擎搜索“API 节流防抖” 都是 js 相关的,求指教!

2527 次点击
所在节点    程序员
10 条回复
janxin
2020-08-18 14:28:19 +08:00
你换个搜索关键词
rate limit 和 backoff/retry
JJstyle
2020-08-18 14:34:48 +08:00
好吧,节流和防抖似乎只是 js 特有的关键词,我咋想不到 rate limit 呢😅,似乎找到比较有用的信息:

https://www.nginx.com/blog/rate-limiting-nginx/
JJstyle
2020-08-18 14:35:24 +08:00
@janxin >#1
JJstyle
2020-08-18 14:37:31 +08:00
nginx 的这个用法应该还需要考虑到 NAT 环境下公共 IP 的问题
chinvo
2020-08-18 14:43:34 +08:00
这些一般是 API 网关的工作
chotow
2020-08-18 14:48:57 +08:00
换个关键词,限流( Throttle ),后端就挺多的了吧。
在一些不能多次处理的任务中都会用到,基本是用 Redis 锁实现。
woomly
2020-08-18 16:22:57 +08:00
没有做
xuanbg
2020-08-18 16:44:11 +08:00
网关上实现,根据 url 读取配置表中的接口配置数据,如果配了限流参数,就按限流参数来进行访问限制。
Varobjs
2020-08-18 16:46:29 +08:00
防抖真是前端的,后端叫锁
xuanbg
2020-08-18 16:51:31 +08:00
@xuanbg 限流参数就 2 个,分别是单位时间内可访问次数和最小时间窗口。前者如果被设置为每天 100 次,那同一个来源的请求从第一次开始计时,24 小时内超过 100 次后就会被拒绝。后者如果被设置为 3 秒,那么在第一次访问开始计时,3 秒内除第一次外的访问都会被拒绝,过了 3 秒之后,再次访问则重新开始计时。因为你不发请求就不会开始 3 秒计时,所以不会有什么 2.9 秒后只需间隔 0.1 秒的漏洞。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/699286

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX