我正在尝试实时处理不同链接的点击流每次点击都会被记录到数据库中对于大多数链接,每分钟的点击次数或多或少是恒定的(例如我想检测什么时候开始看到这么高的点击流,因为我想延迟和批处理这些流的数据库更新,而不是实时执行它们。
我已经尝试了很多方法,但是没有好的结果。在我看来,这是一个标准的数学问题或队列管理问题。
有什么建议吗?

最佳答案

在插入每个单击时,还要计算过去一分钟的单击次数并插入然后您可以查询速率足够高的事件。
例如(伪代码):

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

关于algorithm - 如何检测请求/秒速率的增加?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15304117/

10-13 00:58