我的服务正在调用其他服务,并且这个其他服务基于在一分钟内发送的请求的数量来限制我(每秒多少次并不重要,因为只要在最后一刻有< x请求)真正简单的算法来计算最后一分钟的请求数
我想显示一个真的是真的粗略估计我的用户在最后一分钟有多少请求。 无论如何,它并不需要是准确的,它只是一种让用户看到大致数字的方式
实现这种计数器的最佳,最少内存要求的方式是什么?
我的服务正在调用其他服务,并且这个其他服务基于在一分钟内发送的请求的数量来限制我(每秒多少次并不重要,因为只要在最后一刻有< x请求)真正简单的算法来计算最后一分钟的请求数
我想显示一个真的是真的粗略估计我的用户在最后一分钟有多少请求。 无论如何,它并不需要是准确的,它只是一种让用户看到大致数字的方式
实现这种计数器的最佳,最少内存要求的方式是什么?
你可以这样做:
int[] requestCount = new int[60]
requestCount[(System.currentTimeMillis()/1000) % 60]++;
IntStream.of(requestCount).sum();
注意:
final AtomicInteger[]
阵列。的足迹应该是相当小的。
rpm(包管理器)标签在这里没有关系,请删除 –
你是指在最近60秒内发出的请求数量,或者是当前分钟数,比如14:13,这可能是在10秒前开始的? – assylias
在最近60秒内 – Johny19