复杂事件多年来一直存在

时间:2018-03-22 22:16:17

标签: wso2 apache-storm apache-flink complex-event-processing wso2sp

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

例如。 " 如果JANE DOE从我的商店购买,她在过去3年内购买了其他任何东西"有点像。

Flink,Storm或WSO2是否支持这种复杂的事件处理?

2 个答案:

答案 0 :(得分:3)

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

如果您无法重播所有历史记录,那么通常您会将其放入其他商店(Cassandra / HBase,Elasticsearch等),并具有您所需的可扩展性和性能特征,然后使用当您收到新事件时,Flink的异步功能支持查询它。

答案 1 :(得分:0)

WSO2 Stream processor让您使用时间incremental analytics功能实现此类功能。要实现您提到的方案,您可以提供客户到达名为“聚合”的构造时触发的事件。当您继续将事件提供给聚合时,它将随时间汇总数据并保存在配置的持久性存储(如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;