我正在评估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引擎,但似乎每个人都以同样的方式这样做。
答案 0 :(得分:0)
这似乎是事件表中的一个已知错误..我已经创建了一个jira来跟踪[1]中的问题,并为该问题添加了一个补丁..将在下一个版本中修复该问题..
[1] https://wso2.org/jira/browse/CEP-866
谢谢..