针对不断变化的大型数据集发出实时警报

Real Time alerts on a big and constantly changing dataset

我有一个庞大的数据集,我必须监控其中的异常情况并发送警报。最接近我正在尝试做的例子如下。

假设关系数据库中有一只股票 table:

stocks:
    id
    date
    stock_name
    price

假设我们正在处理一百万只股票。白天,股票价格根据持续和频繁的实时信息不断更新。在一天结束时,每只股票的最后记录价格是当天的收盘价。第二天,我们 添加 另一百万条记录到 table 并再次开始处理它。

假设用户可以配置如下警报: "When AAPL moves more than 10% than its average for past 10 days, alert me""When any stock moves more than 10% of its average for past 10 days, alert me"

我们需要满足来自不同用户的数百条警报。持续轮询并尝试定期匹配警报是不切实际的。

你会如何实施?如果要走大数据路线,什么样的datastore/caching有利于这类问题。我知道这是一个非常开放的问题,但我正在寻找有关如何解决类似问题以及使用哪些工具集的方向。

这听起来像是流处理器的用例,例如 Apache Flink or Apache Storm。 Flink 和 Storm 都是可扩展的分布式系统。他们以低延迟(数百毫秒,取决于程序的复杂性)连续 运行 程序摄取数据流并分析数据。例如,您可以过滤流、定义时间 windows 以计算特定时间范围内(过去 30 分钟或 10 天)的聚合,或合并多个数据流。