180701-计数时间窗口数据结构的设计

logo

相关博文:

维持计数时间窗口数据结构的设计

I. 背景

有这么一个场景,我需要维护每个商品在3min, 10mn, 1h, 6h, 24h这几个时间窗口内的贸易总额,那么可以怎么实现?

问题拆解:

  • 每个商品,对应多个时间窗口
  • 商品可能很多,因此时间窗口的量可能很大
  • 时间窗口的数据为总数,因此不需要记录每个订单的情况,只需要维护一个交易总额即可
  • 热点数据,可能每分钟都有很多的成交
  • 冷门数据,可能一天都没有几笔成交

180625-关于时间窗口的想法

关于滑动时间窗口的想法

如何设计一个维护当前时间,当之前3min, 5min, 10min, 1h, 24h时间窗口内的访问计数的数据结构,简单来讲就是如何优雅的设计一个滑动时间窗口

180621-一个简单的时间窗口设计与实现

如何设计一个计数的时间窗口

时间窗口,通常对于一些实时信息展示中用得比较多,比如维持一个五分钟的交易明细时间窗口,就需要记录当前时间,到五分钟之前的所有交易明细,而五分钟之前的数据,则丢掉

一个简单的实现就是用一个队列来做,新的数据在对头添加;同时起一个线程,不断的询问队尾的数据是否过期,如果过期则丢掉

另外一中场景需要利用到这个时间窗口内的数据进行计算,如计算着五分钟交易中资金的流入流出总和,如果依然用上面的这种方式,会有什么问题?

  • 如果时间窗口大,需要存储大量的明细数据
  • 我们主要关心的只有资金流入流出;存这些明细数据得不偿失
  • 每次新增or删除过期数据时,实时计算流入流出消耗性能

针对这种特殊的场景,是否有什么取巧的实现方式呢?

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×