- 实战Alibaba Sentinel:深度解析微服务高并发流量治理
- 吴就业
- 286字
- 2022-05-06 15:33:25
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=1739603208-CiD7mzKaQ8qk3pvoFpKJC9aJfCzXcyYw-0-48cf373ee919ad34e82b65e9f8d1832e)
图4.3 定位前一个Bucket
如果当前时间戳对应的Bucket的时间窗口的开始时间戳为1595974702000,那么前一个Bucket的时间窗口的开始时间戳可能是1595974701000,也可能是一个滑动窗口周期之前的时间戳1595974641000。
因此,在获取当前Bucket的前一个Bucket时,需要将Bucket的时间窗口的开始时间戳与当前时间戳比较,如果跨越了一个滑动窗口周期,就说明这个Bucket不是我们想要的。