在 #1 中我提到使用滑动窗口限流器。但是它也有一个缺陷,就是执行 lua 脚本本身性能比较差。 那么有一种更加简单的限流方式,就是在维持一个计数,每次请求来了 +1,请求处理完毕 -1。当请求正在处理过程中,也叫做 ActiveRequest,因此这个限流也被叫做活跃请求数限流。 如果在请求到来 +1 之后,发现超过了阈值,就直接拒绝请求。 那么应该有两个版本: - 本地单机限流 - 基于 Redis 的集群限流。 你可以分成两个合并请求,也可以一个合并请求直接完成两个限流器。
在 #1 中我提到使用滑动窗口限流器。但是它也有一个缺陷,就是执行 lua 脚本本身性能比较差。
那么有一种更加简单的限流方式,就是在维持一个计数,每次请求来了 +1,请求处理完毕 -1。当请求正在处理过程中,也叫做 ActiveRequest,因此这个限流也被叫做活跃请求数限流。
如果在请求到来 +1 之后,发现超过了阈值,就直接拒绝请求。
那么应该有两个版本:
你可以分成两个合并请求,也可以一个合并请求直接完成两个限流器。