如何检测请求/秒速率的增加?

时间:2013-03-08 22:04:46

标签: algorithm bigdata

我正在尝试实时处理不同链接的点击流。每次单击都会记录到数据库中。对于大多数链接,点击次数/分钟或多或少是恒定的(例如,<50)。然而,其中一小部分得到1000-2000 / min,但只是很短的一段时间。

我想检测何时开始看到如此高流量的点击流,因为我想推迟并批量处理这些流的数据库更新,而不是实时执行。

我一直在玩很多方法但没有很好的结果。这看起来像是标准的数学问题或队列管理问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在您插入每次点击时,还会计算过去一分钟的点击次数并插入。然后,您可以查询速率足够高的事件。

例如(伪代码):

proc record_click
    insert into click_log (current_time, event_info)
    insert into click_rates (current_time, 
        (select count(*) from click_log where time > current_time - 1 minute))

如果你不想在插入点击时这样做,你可以稍后计算这个值,但这将是一个可能很大的数据集来咀嚼,而不是每次点击时只有50个记录时间。

create view click_rates as
    select event_time, count(*) as rate
    from click_events e1, click_events e2
    where e2.event_time between e1.event_time - interval '1 minute' and e1.event_time
    group by e1.event_time