相关博文:
维持计数时间窗口数据结构的设计
I. 背景
有这么一个场景,我需要维护每个商品在3min, 10mn, 1h, 6h, 24h这几个时间窗口内的贸易总额,那么可以怎么实现?
问题拆解:
- 每个商品,对应多个时间窗口
- 商品可能很多,因此时间窗口的量可能很大
- 时间窗口的数据为总数,因此不需要记录每个订单的情况,只需要维护一个交易总额即可
- 热点数据,可能每分钟都有很多的成交
- 冷门数据,可能一天都没有几笔成交
时间窗口,通常对于一些实时信息展示中用得比较多,比如维持一个五分钟的交易明细时间窗口,就需要记录当前时间,到五分钟之前的所有交易明细,而五分钟之前的数据,则丢掉
一个简单的实现就是用一个队列来做,新的数据在对头添加;同时起一个线程,不断的询问队尾的数据是否过期,如果过期则丢掉
另外一中场景需要利用到这个时间窗口内的数据进行计算,如计算着五分钟交易中资金的流入流出总和,如果依然用上面的这种方式,会有什么问题?
针对这种特殊的场景,是否有什么取巧的实现方式呢?
Update your browser to view this website correctly. Update my browser now