2

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

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

我已经查看了 siddhi (wso2) 和 esper 查询语言,但我不知道如何实现这一点。

4

2 回答 2

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 文档这个关于高级查询的页面也可能会有所帮助。

于 2013-07-13T19:24:37.943 回答
2

Esper,例如使用 match-recognize 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 
)
于 2013-07-13T20:50:42.153 回答