我正在评估ATM卡交易欺诈检测的不同可能解决方案,输入负载约为每秒50000,响应时间为几秒 .
WSO2 CEP看起来更适合整体解决方案,但由于我是WSO2 CEP的新手而遇到了内存和性能问题所以请在CEP WSO2 / CEP中建议以下有更好的方法 .
为了检测欺诈,我们必须在1天的时间段内捕获数据聚合,这会导致内存溢出或性能损失 .
1)由于CEP试图将所有记录保存在内存中一整天,导致内存不足
from instream#window.time(1 day)
select sum(amount) as totalAmt;
2)在尝试从表中加载所有记录以执行某些操作时,导致性能下降 .
define table instream_table (....) from ( datasource,table,cache policy) ;
from instream#window.length(1) join instream_table
on instream.card_id==intable.card_id
select sum(instream_table.amount) as totalAmt;
最糟糕的事情我注意到CEP触发 select * from instream_table
而不是为card_id添加偶数where子句,我期待CEP足够聪明才能解雇 select sum(amount) from instream_table where card_id=xxxxx
我已经在WSO2 CEP中查看了窗口的文档但是找不到任何优化方法,因为它看起来像WSO2 CEP尝试内存中的所有内容 .
让我知道是否有任何解决方法或更好的解决方案来实现这一目标 . 我已经看过像esper这样的其他CEP引擎,但似乎每个人都以同样的方式这样做 .
1 回答
它似乎是事件表中的一个已知错误..我已经创建了一个jira来跟踪[1]中的问题,并为该问题添加了一个补丁..将在下一个版本中修复该问题..
[1] https://wso2.org/jira/browse/CEP-866
谢谢..