为大量数据流氓

时间:2015-10-20 20:16:04

标签: java drools

我们需要在一天内处理大约5MM的消息,并根据某些业务规则,为异步接收的消息生成唯一标识符。

用例: -

系统收到消息A,消息B,消息C和消息D(所有消息类型的标准xml格式)。

业务规则: - 如果邮件A包含标记 df['Title'] = df['Title'].apply(lambda x: [item for item in x if item not in stop]) df['Body'] = df['Body'].apply(lambda x: [item for item in x if item not in stop]) ,则标记值与邮件B,C或<tag1><tag2><tag3>的值相匹配d;分配为第一次匹配分配的标识符。如果没有匹配,则生成新标识并分配给消息A. 类似的规则适用于消息B,C或D.

我们考虑过使用Drools Engine实现来支持上述用例,但不确定它是否能够处理如此大量的数据并在实时处理。

是否有人使用Drools Engine处理大量数据?如果有,请您分享问题或统计数据。

1 个答案:

答案 0 :(得分:0)

对于只检查4个条件的简单规则,您描述的Drools的执行速度将超过足够快。只需确保您只编译一次rool而不是每次执行规则。您可能会看到在热状态下每分钟几乎没有100_000个规则调用的性能与上面描述的简单规则相比。

看看这些基准,以获得更好的想法: https://github.com/winklerm/phreak-examples/tree/master/benchmark