0

我正在评估 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 尝试处理内存中的所有内容。

让我知道是否有任何解决方法或更好的解决方案来实现这一目标。我看过其他 CEP 引擎,比如 esper,但似乎每个人都在以同样的方式这样做。

4

1 回答 1

0

这似乎是事件表中的一个已知错误。我在 [1] 中创建了一个 jira 来跟踪该问题,并为该问题添加了一个补丁。将在下一个版本中修复该问题。

[1] https://wso2.org/jira/browse/CEP-866

谢谢..

于 2014-06-06T09:32:13.850 回答