CEP如何检测和报告流中的重复项?

时间:2013-07-13 06:41:32

标签: wso2 complex-event-processing esper siddhi

有没有办法检测和报告流中的重复项?

例如: 包含具有用户名和IP地址的元组的用户登录数据流。 目标是在最后10秒内检测来自不同IP的同一用户的登录。

我看过siddhi(wso2)和esper查询语言,但我无法想象如何实现这一点。

2 个答案:

答案 0 :(得分:4)

在WSO2 CEP(Siddhi)中,您可以使用“模式”

来实现此目的

示例查询:

from every a1 = authStream
            -> b1 = authStream[username == a1.username and ipAddress != a1.ipAddress] 
            within 10000 insert into alertStream a1.username as detectedUserName 

在上面的查询中,a1和b1引用了来自authStream的2个事件,我们将寻找其用户名相等且ip地址不同的模式。使用'within'关键字,我们可以限制此模式应在其中发生的时间段(以毫秒为单位)。然后我们将找到的匹配项插入alertStream。

有关模式的更多信息,请查看WSO2 CEP documentation on patternsThis page on advanced queries也可以提供帮助。

答案 1 :(得分:2)

Esper,例如使用匹配识别的SQL模式建议标准:

select * from AuthStream.win:time(10 sec)
match_recognize (
  partition by username
  measures A.username as a_name
  pattern (A B)
  define 
    B as B.ipaddress != A.ipaddress 
)