复杂的事件传播多年



我有一个场景,如果查询的一部分与事件匹配,我想从数据存储中获取一些其他事件以针对查询的其余部分进行测试

例如。">如果简·多伊从我的商店购买,她在过去 3 年里买了其他东西"之类的东西。

Flink、Storm 或 WSO2 是否为这种复杂的事件处理提供支持?

Flink 可以做到这一点,但它需要你从你关心的最早开始(例如 3 年前(处理所有事件,以便你可以为每个客户构建状态。然后 Flink 允许你管理这种状态(通常使用 RocksDB(,这样你就不必在系统故障时重放所有事件。

如果你不能重播所有的历史记录,那么通常你会把它放到其他存储(Cassandra/HBase、Elasticsearch等(中,具有你需要的可扩展性和性能特征,然后在收到新事件时使用Flink的异步函数支持来查询它。

WSO2 流处理器让您通过时间增量分析功能实现此类功能。若要实现你提到的方案,可以将客户到达时触发的事件提供给名为"聚合"的构造。 当您继续将事件馈送到聚合时,它将随着时间的推移汇总数据,并将保存在配置的持久性存储(如 DB(中。

可以查询此聚合以获取给定时间段的状态。对于示例,以下查询将获取 2014-2015 年的名称、购买的商品总数和平均交易价值

from CustomerSummaryRetrievalStream as b join CustoemrAggregation as a
on a.name == b.name
within "2014-01-01 00:00:00 +05:30", "2015-01-01 00:00:00 +05:30"
per “years”
select a.name, a.total, a.avgTxValue
insert into CustomerSummaryStream;

相关内容

  • 没有找到相关文章

最新更新