- 实战Alibaba Sentinel:深度解析微服务高并发流量治理
- 吴就业
- 241字
- 2022-05-06 15:33:24
4.1.3 WindowWrap
因为Bucket自身并不保存时间窗口信息,所以Sentinel给Bucket添加了一个包装类WindowWrap,用于记录Bucket的时间窗口信息。WindowWrap类的源码如下。
![](https://epubservercos.yuewen.com/9A25A7/23020654801681306/epubprivate/OEBPS/Images/42670-00-78-2.jpg?sign=1739680943-WDfIxEt9M5UdBvA6OykUyCbd9nruwIni-0-9c7b0995e3638f5a8b6ad7c44bd1a0ec)
• windowLengthInMs:Bucket的时间窗口大小。
• windowStart:时间窗口的开始时间戳。
• value:被包装的Bucket。
假设Bucket的时间窗口大小为1秒,那么Bucket统计的就是1秒内的请求成功总数、请求异常总数、总耗时等指标数据。如果时间窗口为[1577017699000, 1577017699999],那么1577017699000就是该Bucket的时间窗口的开始时间戳(windowStart),因为1秒等于1000毫秒,所以1000毫秒就是该Bucket的时间窗口大小(windowLengthInMs)。
windowStart+windowLengthInMs=时间窗口结束时间
给定一个时间戳,判断该时间戳是否在Bucket的时间窗口内的算法实现如下。
![](https://epubservercos.yuewen.com/9A25A7/23020654801681306/epubprivate/OEBPS/Images/42670-00-79-1.jpg?sign=1739680943-ol8BF8lWNqbjVYkBAZZ0gzrot1Bds55G-0-f177b2fae1e1da7ae095ee127a899a33)