针对不断变化的大型数据集发出实时警报
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 天)的聚合,或合并多个数据流。
我有一个庞大的数据集,我必须监控其中的异常情况并发送警报。最接近我正在尝试做的例子如下。
假设关系数据库中有一只股票 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 天)的聚合,或合并多个数据流。