![实战Alibaba Sentinel:深度解析微服务高并发流量治理](https://wfqqreader-1252317822.image.myqcloud.com/cover/429/43738429/b_43738429.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.1.5 获取当前时间戳的前一个Bucket
根据当前时间戳计算出当前Bucket的时间窗口的开始时间戳,使用当前Bucket的时间窗口的开始时间戳减去Bucket的时间窗口大小就能定位出前一个Bucket。
由于滑动窗口在实现上使用的数据结构是数组,数组的每个元素都会被循环使用,因此当前Bucket与前一个Bucket可能会相差一个完整的滑动窗口周期,如图4.3所示。
![](https://epubservercos.yuewen.com/9A25A7/23020654801681306/epubprivate/OEBPS/Images/42670-00-81-1.jpg?sign=1734452567-nX7aFyh9FABsCjnhMyRtdgkUsJbYY7f5-0-7821a24cb7a465ecb68005992a660dd6)
图4.3 定位前一个Bucket
如果当前时间戳对应的Bucket的时间窗口的开始时间戳为1595974702000,那么前一个Bucket的时间窗口的开始时间戳可能是1595974701000,也可能是一个滑动窗口周期之前的时间戳1595974641000。
因此,在获取当前Bucket的前一个Bucket时,需要将Bucket的时间窗口的开始时间戳与当前时间戳比较,如果跨越了一个滑动窗口周期,就说明这个Bucket不是我们想要的。