![实战Alibaba Sentinel:深度解析微服务高并发流量治理](https://wfqqreader-1252317822.image.myqcloud.com/cover/429/43738429/b_43738429.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
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=1739251963-jLKuaAdj3gwPmNR6vvUczehYcQEITKd0-0-f09c0d97412818f524122bc8c4058f43)
• 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=1739251963-I3DGy9NiqloWTXP3BMwydieCIyLaqfja-0-6842015672792f797569f257893ba6c2)